Advertisement
Guest User

Untitled

a guest
Aug 27th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. int percorrido[21],k,z=1;
  3.  
  4. using namespace std;
  5.  
  6. typedef struct{
  7. int are[21],ind;// ind marca o proximo item da lista de adjacencia que sera percorrido
  8. }grafo;
  9.  
  10. void dfs(grafo m[],int i,int x,int tab){
  11. int j,y;
  12. z++;
  13. percorrido[i]=x;// x eh uma flag que muda em funcao do vertice inicial do dfs
  14. while(m[i].are[m[i].ind]!=-1){ // passa por todas as arestas do vertice(-1 indica o fim da lista de vertices pra qual o vertice 'i' aponta)
  15. for(j=0;j<tab;j++)
  16. printf(" ");
  17. printf(" %d-%d",i,m[i].are[m[i].ind]);
  18. y=m[i].are[m[i].ind];
  19. if(percorrido[m[i].are[m[i].ind]]!=x){// verifica se o vertice para o qual se pretende ir ja foi percorrido
  20. printf(" pathR(G,%d)\n",m[i].are[m[i].ind]);// executa o dfs para o proximo vertice
  21. dfs(m,y,x,tab+1);
  22. }
  23. else
  24. printf("\n");
  25. m[i].ind++;
  26. k=0;
  27. }
  28. }
  29.  
  30. int main(){
  31. int v,e,e1,v1,i,j,x,y,n,caso;
  32. grafo m[21];
  33. freopen("entrada.txt","r",stdin);
  34. scanf("%d",&n);
  35. caso=1;
  36. while(n--){
  37. k=1;
  38. scanf("%d %d",&v,&e);
  39. for(i=0;i<=v;i++)
  40. m[i].ind=0;
  41. for(i=0;i<e;i++){
  42. scanf("%d %d",&v1,&e1);
  43. m[v1].are[m[v1].ind]=e1;
  44. m[v1].ind++;
  45. }
  46. for(i=0;i<=v;i++)
  47. sort(m[i].are,m[i].are+m[i].ind);
  48. for(i=0;i<v;i++){
  49. percorrido[i]=-1;
  50. m[i].are[m[i].ind]=-1;
  51. m[i].ind=0;
  52. }
  53. printf("Caso %d:\n",caso);
  54. for(i=0;i<v;i++){ // loop que executa o dfs partindo de cada vertice
  55. percorrido[i]=i; //vetor para verificar se um vertice ja foi percorrido
  56. dfs(m,i,i,0);
  57. if(k==0){
  58. printf("\n");
  59. k=1;
  60. }
  61. }
  62. printf("%d\n",z);
  63. caso++;
  64. }
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement