Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4.  
  5. public class BridgeNum {
  6. public static ArrayList<ArrayList<Integer>> ribs = new ArrayList<>();
  7. public static void main(String[] args) {
  8. Scanner in = new Scanner(System.in);
  9. int n = in.nextInt();
  10. int m = in.nextInt();
  11. int[] count = new int[1];
  12. int[] parents = new int[n];
  13. int[] len = new int[n];
  14. int[] nowLen = new int[n];
  15. Arrays.fill(parents, -1);
  16. Arrays.fill(count, 0);
  17. for (int i = 0; i < n; i++){
  18. ArrayList<Integer> arr= new ArrayList<>();
  19. ribs.add(arr);
  20. }
  21. for (int i = 0; i < m ;i++){
  22. int v = in.nextInt();
  23. int u = in.nextInt();
  24. ribs.get(v).add(u);
  25. ribs.get(u).add(v);
  26. }
  27. int[] helper = new int[n];
  28. Arrays.fill(helper, -1);
  29. Thread t=new Thread(null,null,"Main",2 << 23){
  30. public void run(){
  31. for (int i = 0; i < n; i++){
  32. if (helper[i] == -1) dfs(i, 1, count, helper, len, nowLen, parents);
  33. }
  34. System.out.println(count[0]);
  35. }
  36. };
  37. t.start();
  38. }
  39.  
  40.  
  41. public static void dfs(int i, int k, int[] count, int[] helper, int[] len, int[] nowLen, int[] parents){
  42. helper[i] = 0;
  43. len[i] = nowLen[i] = k;
  44. int j = -1;
  45. while (++j < ribs.get(i).size()){
  46. int v = ribs.get(i).get(j);
  47. if (helper[v] != -1 && v != parents[i])
  48. nowLen[i] = Math.min(len[v], nowLen[i]);
  49. if(helper[v] == -1) {
  50. parents[v] = i;
  51. ++k;
  52. dfs(v, k, count, helper, len, nowLen, parents);
  53. nowLen[i] = Math.min(nowLen[v], nowLen[i]);
  54. if (nowLen[v] > len[i]) ++count[0];
  55. }
  56. }
  57. }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement