Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3.  
  4. using namespace std;
  5.  
  6. map<int, int> grafo[10000];
  7. bool visitados[10000];
  8. bool correcto = true;
  9.  
  10. void DFS(int s, int &cont)
  11. {
  12.     if (!visitados[s])
  13.     {
  14.         visitados[s] = true;
  15.         cont++;
  16.     }
  17.     for (auto u : grafo[s])
  18.     {
  19.         if (u.second > 1)
  20.             correcto = false;
  21.         if (!visitados[u.first])
  22.             DFS(u.first, cont);
  23.     }
  24. }
  25.  
  26.  
  27. int main()
  28. {
  29.     int numVertices;
  30.     while (cin >> numVertices)
  31.     {
  32.         correcto = true;
  33.         for (int i = 0; i < numVertices; i++)
  34.         {
  35.             grafo[i].clear();
  36.             visitados[i] = false;
  37.         }
  38.         int numAristas;
  39.         cin >> numAristas;
  40.         int a, b;
  41.         for (int i = 0; i < numAristas; i++)
  42.         {
  43.             cin >> a >> b;
  44.             grafo[a][b]++;
  45.             grafo[b][a]++;
  46.         }
  47.         int comp = 1;
  48.         int aux = 0;
  49.         int cont = 0;
  50.         for (int i = 0; i < numVertices; i++)
  51.         {
  52.             DFS(i, comp);
  53.             if (comp != aux)
  54.             {
  55.                 aux = comp;
  56.                 cont++;
  57.             }
  58.         }
  59.         if (cont > 1)
  60.             correcto = false;
  61.         if (correcto)
  62.             cout << "SI" << endl;
  63.         else
  64.             cout << "NO" << endl;
  65.     }
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement