fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <utility>
  4. #include <queue>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. int n, m, i;
  10. cin >> n >> m;
  11.  
  12. vector<pair<int, int>> games(m);
  13.  
  14. int u, v, t;
  15. for (i = 0; i < m; i++) {
  16. cin >> u >> v >> t;
  17. if (t == 1) games[i] = make_pair(u-1, v-1);
  18. else games[i] = make_pair(v-1, u-1);
  19. }
  20.  
  21. vector<vector<int>> graph(n, vector<int> {});
  22. for (auto j: games) graph[j.first].push_back(j.second);
  23.  
  24. vector<int> indeg(n);
  25. for (auto j: games) indeg[j.second]++;
  26.  
  27. int processed = 0;
  28. bool flag = true;
  29. queue<int> q;
  30. for (i = 0; i < n; i++)
  31. if (indeg[i] == 0) q.push(i);
  32.  
  33. while (!q.empty()) {
  34. if (q.size() > 1) flag=false;
  35. u = q.front();
  36. q.pop();
  37.  
  38. for (auto v: graph[u]) {
  39. indeg[v]--;
  40. if (indeg[v] == 0) q.push(v);
  41. }
  42. processed++;
  43. }
  44.  
  45. if (flag) cout << "YES\n";
  46. else cout << "NO\n";
  47. }
Success #stdin #stdout 0.01s 5320KB
stdin
5 2
2 4 2
3 2 1
stdout
NO