Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 23rd, 2012  |  syntax: None  |  size: 1.31 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import java.util.*;
  2. import java.io.*;
  3.  
  4. class Vertex {
  5. int value;
  6. int depth;
  7. boolean visited;
  8. List<Vertex> list;
  9.  
  10. public Vertex(int value) {
  11. this.value = value;
  12. visited = false;
  13. list = new ArrayList<Vertex>();
  14. depth = 0;
  15. }
  16. }
  17.  
  18. public class Main {
  19. Vertex dV = null;
  20.  
  21. public void dfs(Vertex u, int depth) {
  22. if(dV == null)
  23. dV = u;
  24.  
  25. u.visited = true;
  26. u.depth = depth;
  27. dV = dV.depth > depth ? dV : u;
  28.  
  29. for(Vertex v : u.list) {
  30. if(!v.visited) {
  31. dfs(v,u.depth + 1);
  32. }
  33. }
  34. }
  35.  
  36. public static void main(String[] args) throws IOException {
  37. //Scanner sc = new Scanner(System.in);
  38. Map<Integer,Vertex> vertexList = new HashMap<Integer,Vertex>();
  39. Main m = new Main();
  40. StreamTokenizer strTok = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
  41. strTok.nextToken();
  42. int n = (int)strTok.nval;
  43.  
  44. for(int i=1;i<=n;i++) {
  45. vertexList.put(i,new Vertex(i));
  46. }
  47.  
  48. for(int i=0;i<n-1;i++) {
  49. strTok.nextToken();
  50. Vertex u = vertexList.get((int)strTok.nval);
  51. strTok.nextToken();
  52. Vertex v = vertexList.get((int)strTok.nval);
  53. u.list.add(v);
  54. v.list.add(u);
  55. }
  56.  
  57. Vertex u = vertexList.get(1);
  58. m.dfs(u,0);
  59.  
  60. for(Vertex v : vertexList.values()) {
  61. v.depth = 0;
  62. v.visited = false;
  63. }
  64.  
  65. Vertex start = m.dV;
  66. m.dfs(m.dV,0);
  67. Vertex end = m.dV;
  68. System.out.println(Math.abs(start.depth - end.depth));
  69. }
  70. }