ACWing 4216. 图中的环
给定一个
点的编号从
图中不含重边和自环。
请你对给定图进行判断,如果该图是一个有且仅有一个环的连通图,则输出 YES
,否则输出 NO
。
输入格式
第一行包含两个整数
接下来
输出格式
如果该图是一个有且仅有一个环的连通图,则输出 YES
,否则输出 NO
。
数据范围
前三个测试点满足
所有测试点满足
输入样例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 #include2 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 }