#include<iostream>usingnamespace std;constint N =210;int n, m;int nodes[N *2], cnt;bool g[N][N];bool st[N];boolcheck(){if(cnt != n +1|| nodes[0]!= nodes[cnt -1])returnfalse;for(int i =1; i <= n; i ++) st[i]=0;for(int i =0; i < cnt -1; i ++){st[nodes[i]]=true;if(!g[nodes[i]][nodes[i +1]])returnfalse;}for(int i =1; i <= n; i ++)if(!st[i])returnfalse;returntrue;}intmain(){scanf("%d%d",&n,&m);int a, b;while(m --){scanf("%d%d",&a,&b);g[a][b]= g[b][a]=true;}int k;scanf("%d",&k);while(k --){scanf("%d",&cnt);for(int i =0; i < cnt; i ++)scanf("%d",&nodes[i]);if(check())puts("YES");elseputs("NO");}}
#include<iostream>usingnamespace std;constint N =510;int n, m;bool g[N][N];int d[N];bool st[N];// dfs用intdfs(int u){st[u]=true;int cnt =1;for(int i =1; i <= n; i ++){if(!st[i]&& g[u][i])cnt +=dfs(i);}return cnt;}intmain(){scanf("%d%d",&n,&m);int a, b;while(m --){scanf("%d%d",&a,&b);g[a][b]= g[b][a]=true;d[a]++, d[b]++;}int cnt =dfs(1);printf("%d", d[1]);for(int i =2; i <= n; i ++)printf(" %d", d[i]);puts("");if(cnt == n){int s =0;for(int i =1; i <= n; i ++)if(d[i]%2)s ++;if(!s)puts("Eulerian");elseif(s ==2)puts("Semi-Eulerian");elseputs("Non-Eulerian");}elseputs("Non-Eulerian");}
#include<iostream>#include<cstring>usingnamespace std;constint N =10010;int n, m;structEdge{int a, b;}e[N];bool st[N];intmain(){cin >> n >> m;for(int i =0; i < m; i ++) cin >> e[i].a >> e[i].b;int k;cin >> k;while(k --){int cnt;cin >> cnt;memset(st,0,sizeof st);while(cnt --){int x;cin >> x;st[x]=true;}int i;for(i =0; i < m; i ++)if(!st[e[i].a]&&!st[e[i].b])break;if(i == m)puts("Yes");elseputs("No");}return0;}
#include<iostream>#include<cstring>usingnamespace std;constint N =210;int n, m;bool g[N][N];int nodes[N], cnt;bool st[N];boolcheck_clique(){for(int i =0; i < cnt; i ++)for(int j =0; j < i; j ++)if(!g[nodes[i]][nodes[j]])returnfalse;returntrue;}boolcheck_maximum(){memset(st,0,sizeof st);for(int i =0; i < cnt; i ++)st[nodes[i]]=true;for(int i =1; i <= n; i ++){if(!st[i]){bool success =false;for(int j =0; j < cnt; j ++)if(!g[i][nodes[j]]){success =true;break;}if(!success)returnfalse;}}returntrue;}intmain(){scanf("%d%d",&n,&m);int a, b;while(m --){scanf("%d%d",&a,&b);g[a][b]= g[b][a]=true;}int k;scanf("%d",&k);while(k --){scanf("%d",&cnt);for(int i =0; i < cnt; i ++)scanf("%d",&nodes[i]);if(check_clique()){if(check_maximum())puts("Yes");elseputs("Not Maximal");}elseputs("Not a Clique");}}
#include<iostream>#include<cstring>usingnamespace std;constint N =210, INF =0x3f3f3f3f;int n, m;int d[N][N], vers[310];bool st[N];intmain(){cin >> n >> m;memset(d,0x3f,sizeof d);for(int i =0; i < m; i ++){int a, b, c;cin >> a >> b >> c;d[a][b]= d[b][a]= c;}int k;cin >> k;int min_dist = INF, min_id;for(int T =1; T <= k; T ++){int cnt;cin >> cnt;for(int i =0; i < cnt; i ++) cin >> vers[i];int sum =0;bool success =true;memset(st,0,sizeof st);for(int i =0; i +1< cnt; i ++){int a = vers[i], b = vers[i +1];if(d[a][b]== INF){sum =-1;success =false;break;}else sum += d[a][b];st[a]=true;}for(int i =1; i <= n; i ++)if(!st[i]){success =false;break;}if(vers[0]!= vers[cnt -1]) success =false;if(sum ==-1)printf("Path %d: NA (Not a TS cycle)\n", T);else{if(!success)printf("Path %d: %d (Not a TS cycle)\n", T, sum);else{if(cnt == n +1)printf("Path %d: %d (TS simple cycle)\n", T, sum);elseprintf("Path %d: %d (TS cycle)\n", T, sum);if(min_dist > sum){min_dist = sum;min_id = T;}}}}printf("Shortest Dist(%d) = %d\n", min_id, min_dist);return0;}
#include<iostream>#include<cstring>#include<unordered_set>usingnamespace std;constint N =10010;int n, m;structEdge{int a, b;}e[N];int color[N];intmain(){cin >> n >> m;for(int i =0; i < m; i ++) cin >> e[i].a >> e[i].b;int k;cin >> k;while(k --){for(int i =0; i < n; i ++) cin >> color[i];bool success =true;for(int i =0; i < m; i ++)if(color[e[i].a]== color[e[i].b]){success =false;break;}if(success){unordered_set<int> S;for(int i =0; i < n; i ++) S.insert(color[i]);printf("%d-coloring\n", S.size());}elseputs("No");}return0;}與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖