ACWing 4216. 图中的环

给定一个 nn 个点 mm 条边的无向图。

点的编号从 11 到 nn。

图中不含重边和自环。

请你对给定图进行判断,如果该图是一个有且仅有一个环的连通图,则输出 YES,否则输出 NO

输入格式

第一行包含两个整数 n,mn,m。

接下来 mm 行,每行包含两个整数 a,ba,b,表示点 aa 和点 bb 之间存在一条无向边。

输出格式

如果该图是一个有且仅有一个环的连通图,则输出 YES,否则输出 NO

数据范围

前三个测试点满足 1n101≤n≤10。
所有测试点满足 1n1001≤n≤100,0mn(n1)20≤m≤n(n−1)2,1a,bn1≤a,b≤n。

输入样例1:

6 6
6 3
6 4
5 1
2 5
1 4
5 4

输出样例1:

YES

输入样例2:

6 5
5 6
4 6
3 1
5 1
1 2

输出样例2:

NO
复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6   int n,m;
 7   cin>>n>>m;
 8   vector<int>G[105];
 9   vector<int>f(105,0);
10   int u,v;
11   for(int i=1;i<=m;i++)
12   {
13     cin>>u>>v;
14     G[u].push_back(v);
15     G[v].push_back(u);
16   }
17   function<int(int,int)>dfs=[&](int u,int fa)
18   {
19     if(f[u])return 0;
20     int cnt=1;
21     f[u]=1;
22     for(auto &v:G[u])
23     {
24       if(v!=fa)cnt+=dfs(v,u);
25     }
26     return cnt;
27   };
28   if(dfs(1,0)==n&&n==m)cout<<"YES"<<endl;
29   else cout<<"NO"<<endl;
30   
31   return 0;
32 }
复制代码

 

posted @   matt-11  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示