fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <queue>
  5. using namespace std;
  6. int n,a,m,b,u, odleglosc=0, indeks,flaga,lotnisko, czy_spojny;
  7. const int MAXI = 1e6 + 7;
  8. vector <int> graf[MAXI];
  9. vector <int> OddO[MAXI];
  10. bool odw[MAXI];
  11. int wezel_komunikacyjny[MAXI]; //jeśli jest jakieś centrum z którego mozna dotrzec wszedzie
  12.  
  13. void bfs(int w){
  14. queue <int> q;
  15. q.push(w);
  16. odw[w] = true;
  17. while(q.size())
  18. {
  19. w = q.front();
  20. q.pop();
  21. for(int i : graf[w]){
  22. if(!odw[i]){
  23. odw[i] = true;
  24. q.push(i);
  25. }
  26. }
  27. }
  28. }
  29. void czyszczenie(){
  30. for (int i=0; i<=m; i++)
  31. {
  32. odw[i]=0;
  33. }
  34.  
  35. }
  36. void dfs(int w){
  37.  
  38. odw[w]=1;
  39.  
  40. for (int i=0; i<OddO[w].size(); i++)
  41. {
  42. u=OddO[w][i];
  43. if (!odw[i]) dfs(u);
  44. }
  45.  
  46.  
  47. }
  48. int sprawdz(){
  49. for (int i=1; i<=m; i++)
  50. {
  51. //cout << i << " " << odw[i]<<endl;
  52. if (!odw[i]) {
  53.  
  54. //cout <<"NO\n"<< i << " 1";
  55. return i;
  56. }
  57. }
  58. return 0;
  59. }
  60. void wyswietl(){
  61.  
  62. for (int i=0; i<=m; i++)
  63. {
  64. cout <<i << " " << odw[i]<<" \n";
  65. }
  66. }
  67.  
  68. int main() {
  69. cin >>m>>n ;
  70.  
  71. for (int i=1; i<=n; i++){
  72. cin >> a >> b;
  73. graf[b].push_back(a);
  74. OddO[a].push_back(b);
  75. }
  76.  
  77. bfs(1);
  78. int gamon=sprawdz();
  79. // wyswietl();
  80. if (gamon!=0)//moze do kazdego miasta
  81. {
  82. cout << "NO\n" <<gamon << " 1";
  83. return 0;
  84. }
  85. czyszczenie();
  86.  
  87.  
  88.  
  89. return 0;
  90. }
  91.  
Success #stdin #stdout 0.02s 53188KB
stdin
6 8
1 2
2 3
3 1
1 4
3 4
4 5
5 6
6 4
stdout
NO
4 1