D - Unicyclic Components

发布时间:2024年01月19日

很经典的板子题

#include <bits/stdc++.h>
using namespace std;
int main(){
  int N, M;
  cin >> N >> M;
  vector<vector<int>> E(N);
  for (int i = 0; i < M; i++){
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    E[u].push_back(v);
    E[v].push_back(u);
  }
  vector<bool> used(N, false);
  bool ok = true;
  for (int i = 0; i < N; i++){
    if (!used[i]){
      used[i] = true;
      queue<int> Q;
      Q.push(i);
      int cv = 0, ce = 0;
      while (!Q.empty()){
        int v = Q.front();
        Q.pop();
        cv++;
        for (int w : E[v]){
          ce++;
          if (!used[w]){
            used[w] = true;
            Q.push(w);
          }
        }
      }
      ce /= 2;
      if (cv != ce){
        ok = false;
      }
    }
  }
  if (ok){
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
}

文章来源:https://blog.csdn.net/weixin_73550568/article/details/135685222
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。