Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define N 10000
  4.  
  5. typedef struct sp_tree{
  6. int id;
  7. struct sp_tree *adj[N];
  8. int visited;
  9. int n_adj;
  10. }sp_tree;
  11.  
  12. sp_tree dfs[N];
  13.  
  14. int max_node;
  15.  
  16. void d_dfs(int v, int c, int *counter){
  17. int i;
  18. c++;
  19. for(i = 0; i < dfs[v].n_adj;i++){
  20. if(dfs[v].adj[i]->visited == 0){
  21. printf("node %d , adj -> %d, c -> %d, counter -> %d\n",v,dfs[v].adj[i]->id,c,*counter);
  22. dfs[v].visited = 1;
  23. if(*counter <= c){
  24. *counter = c;
  25. max_node = dfs[v].adj[i]->id;
  26. }
  27. d_dfs(dfs[v].adj[i]->id,c,counter);
  28. }
  29. }
  30. }
  31.  
  32. void problem_e(int v){
  33. int counter = 0;
  34. d_dfs(v,1,&counter);
  35. d_dfs(max_node, 1, &counter);
  36. printf("%d\n",counter);
  37. }
  38.  
  39. void add_vertices(int v1, int v2){
  40.  
  41. dfs[v1].id = v1;
  42. dfs[v1].adj[dfs[v1].n_adj] = &dfs[v2];
  43. dfs[v1].visited = 0;
  44. dfs[v1].n_adj++;
  45.  
  46. dfs[v2].id = v2;
  47. dfs[v2].adj[dfs[v2].n_adj] = &dfs[v1];
  48. dfs[v2].visited = 0;
  49. dfs[v2].n_adj++;
  50.  
  51. }
  52. int main(){
  53. int n;
  54. int i;
  55. int v1,v2;
  56. scanf("%d",&n);
  57. for(i = 0; i < n; i++){
  58. scanf("%d %d",&v1,&v2 );
  59. add_vertices(v1,v2);
  60. }
  61. problem_e(v1);
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement