Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61845
  • 博文数量: 11
  • 博客积分: 76
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-17 12:06
文章分类
文章存档

2014年(1)

2013年(4)

2012年(6)

分类: C/C++

2014-11-28 17:38:25


点击(此处)折叠或打开

  1. #include<iostream>


  2. using namespace std;


  3. #define MAXN 100




  4. int matrix[MAXN][MAXN];
  5. int visited[MAXN];
  6. int low[MAXN];
  7. int index;
  8. int n;


  9. void DFS(int v)
  10. {
  11. int min;
  12. visited[v] = min = ++index;
  13. for(int i = 0; i < n; i++)
  14. {
  15. if(matrix[v][i])
  16. {
  17. if(!visited[i])
  18. {
  19. DFS(i);
  20. if(low[i] < min) min = low[i];
  21. if(low[i] >= visited[v])
  22. {
  23. cout<< v <<endl;
  24. }
  25. }
  26. else
  27. {
  28. if(visited[i] < min)
  29. min = visited[i];
  30. }
  31. }
  32. }
  33. low[v] = min;
  34. }


  35. void Solve(int v)
  36. {
  37. index = 0;
  38. visited[v] = ++index;
  39. bool bJudged = false;
  40. for(int i = 0; i < n; i++)
  41. {
  42. if(matrix[v][i])
  43. {
  44. DFS(i);
  45. if(!bJudged)
  46. {
  47. bJudged = true;
  48. if(index < n)
  49. {
  50. cout<< v << endl;
  51. }
  52. }
  53. }
  54. }

  55. }


  56. void Set(int i, int j, int value)
  57. {
  58. matrix[i][j] = value;
  59. matrix[j][i] = value;
  60. }


  61. int main()
  62. {
  63. n = 4;
  64. memset(matrix, 0, sizeof(matrix));
  65. memset(visited, 0, sizeof(visited));
  66. memset(low, 0, sizeof(low));


  67. Set(0, 1, 1);
  68. Set(1, 2, 1);
  69. Set(1, 3, 1);


  70. Solve(0);


  71. system("pause");
  72. return 0;
  73. }


阅读(1675) | 评论(0) | 转发(0) |
0

上一篇:linux 环境下git 命令小结。

下一篇:没有了

给主人留下些什么吧!~~