NYOJ-42 一笔画问题
2012-04-25 22:25
288 查看
解题思路:1 如果图中所有的点连通且度都为偶数则可以一笔画成。
2 如果图中有不超过2个点的度为奇数则可以一笔画。
3做法显然先通DFS判断图是否连通过,然后在判断图中奇数点度的个数即可。
View Code
2 如果图中有不超过2个点的度为奇数则可以一笔画。
3做法显然先通DFS判断图是否连通过,然后在判断图中奇数点度的个数即可。
View Code
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #define N 1010 using namespace std; int G , vis , num ; int P, Q, ok; void dfs(int u) { int v; vis[u] = 1; for(v=1; v<=P; v++) { if(G[u][v] && !vis[v] && u!=v) { dfs(v); } } } int main() { int i,ncases,count,a,b; scanf("%d",&ncases); while( ncases-- ) { scanf("%d%d",&P,&Q); memset(G,0,sizeof(G)); memset(num,0,sizeof(num)); memset(vis,0,sizeof(vis)); for(i=1; i<=P; i++) G[i][i] = 1; for(i=1; i<=Q; i++) { scanf("%d%d",&a,&b); G[a][b] = G[b][a] = 1; num[a]++; num[b]++; } ok = 1; count = 0; dfs(1); for(i=1; i<=P; i++) { if(!vis[i]) { ok = 0; printf("No\n"); break; } } for(i=1; i<=P; i++) { if(num[i]%2!=0) { count++; } } if(ok) { if(count==0 || count==2) printf("Yes\n"); else printf("No\n"); } } return 0; }
相关文章推荐
- NYOJ 42 一笔画问题
- nyoj42 一笔画问题
- NYOJ42 一笔画问题
- nyoj42 一笔画问题(欧拉回路+并查集)
- NYoj-42-一笔画问题-DFS
- NYOJ--42(搜索)-题目----------------------------- 一笔画问题
- NYOJ-42-一笔画问题(搜索)
- NYOJ-42 一笔画问题
- NYOJ 42 一笔画问题 (欧拉回路+并查集)
- NYOJ 42 一笔画问题(欧拉定理&&并查集)
- NYoj42 一笔画问题
- NYOJ42 一笔画问题
- NYOJ 42 一笔画问题
- NYOJ 题目42:一笔画问题
- NYOJ-42 一笔画问题
- NYOJ 42 一笔画问题
- nyoj 42 一笔画问题
- NYOJ 42 一笔画问题 (回路查询,搜索 or 欧拉)
- nyoj,42,一笔画问题
- nyoj 42 一笔画问题