牛客小白月赛2 D题虚虚实实
题目链接:https://www.nowcoder.com/acm/contest/86/D
解题思路:这题目就是判断是否存在欧拉路径。由无向图存在欧拉路径的充分必要条件可知先判断是否联通,再判断是否有0个或者2个奇数度数点
代码:
1 #include<iostream>
2 #include<string.h>
3 using namespace std;
4 int a[35];
5 int fa[35];
6 int Find(int x){
7 if(fa[x]==x) return x;
8 else{
9 fa[x]=Find(fa[x]);
10 return fa[x];
11 }
12 }
13 void init(int x,int y){
14 fa[Find(x)]=Find(y);
15 return ;
16 }
17 int main(){
18 int T;
19 cin>>T;
20 while(T--){
21 int n,m;
22 cin>>n>>m;
23 for(int i=0;i<34;i++){
24 fa[i]=i;
25 }
26 memset(a,0,sizeof(a));
27 for(int i=0;i<m;i++){
28 int x,y;
29 cin>>x>>y;
30 if(x!=y){
31 if(Find(x)!=Find(y)){
32 init(x,y);
33 }
34 a[x]++;
35 a[y]++;
36 }
37 }
38 int sum=0;
39 int flag=1;
40 int f=Find(1);
41 for(int i=1;i<=n;i++){
42 if(a[i]%2==1){
43 sum++;
44 }
45 if(Find(i)!=f){
46 flag=0;
47 break;
48 }
49 }
50 if((sum==0||sum==2)&&flag==1){
51 cout<<"Zhen"<<endl;
52 }else{
53 cout<<"Xun"<<endl;
54 }
55 }
56 return 0;
57 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步