全部评论 4

  • 拓扑排序

    2天前 来自 上海

    0
  • 考古,

    if(m > 5){
        cout << "NO";
    }else{
        cout << "YES";
    }
    

    2天前 来自 上海

    0
  • 拓扑排序

    2天前 来自 北京

    0
  • 我记得拓扑排序就行了

    2025-08-06 来自 浙江

    0
    • 欧克欧克,多谢

      2025-08-06 来自 浙江

      0
    • 这是代码

      #include <iostream>
      #include <queue>
      #include <vector>
      using namespace std;
      constexpr int N = 2e5+1;
      vector<int> adj[N],in(N);
      void tope(const int n) {
          queue<int> q;
          for (int i = 1;i <= n;i++) {
              if (!in[i]) {
                  q.push(i);
              }
          }
          while (!q.empty()) {
              int u = q.front();
              q.pop();
              for (auto &v : adj[u]) {
                  in[v]--;
                  if (!in[v]) {
                      q.push(v);
                  }
              }
          }
      
      }
      int main() {
          int n,m;
          cin>>n>>m;
          adj[1].clear();
          for(int i=1;i<=m;i++) {
              int u,v;
              cin>>u>>v;
              adj[u].push_back(v);
              in[v]++;
          }
          tope(n);
          for (int v = 1;v<=n;v++) {
              if (in[v]) {
                  cout<<"NO"<<endl;
                  return 0;
              }
          }
          cout<<"YES"<<endl;
          return 0;
      }

      2025-08-06 来自 浙江

      1

热门讨论