uva 10596 Morning Walk
2013-06-21 17:24
435 查看
这个R有可能为零,为零的时候各数据也都OK,需要注意。
突然发现这个题数据有点弱,只需要判断度数就行了。无语。。。。
#include<iostream> #include<cmath> #include<cstdio> #include <cstring> using namespace std; int N, R, ok; int head[10010], end[10010], vis[10010]; int degree[210], flag, num; void dfs(int cur) { for(int i = 0; i < R; i++) { if(!vis[i] && head[i] == cur && end[i] == flag) { num++; if(num == N) ok = 1; return; } if( !vis[i] && head[i] == cur) { num++; vis[i] = 1; dfs(end[i]); } } } int main() { while(cin >> N >> R) { memset(degree, 0, sizeof(degree)); for(int i = 0; i < R; i++) { cin >> head[i] >> end[i]; degree[ head[i] ]++; degree[ end[i] ]++; } ok = 1; if(R==0) ok = 0; for(int i = 0; i < N; i++) if( degree[i]%2 == 1) { ok = 0; break; } memset(vis, 0, sizeof(vis)); if(ok) { flag = head[0]; dfs(head[0]); } if(ok) cout << "Possible" << endl; else cout << "Not Possible" << endl; } return 0; }
突然发现这个题数据有点弱,只需要判断度数就行了。无语。。。。
#include <iostream> #include <cmath> #include <cstdio> #include <cstring> using namespace std; int N, R, ok; int head, end, degree[210]; int main() { while(cin >> N >> R) { memset(degree, 0, sizeof(degree)); for(int i = 0; i < R; i++) { cin >> head >> end; degree[ head ]++; degree[ end ]++; } ok = 1; if(R==0) ok = 0; for(int i = 0; i < N; i++) if( degree[i]%2 == 1) { ok = 0; break; } if(ok) cout << "Possible" << endl; else cout << "Not Possible" << endl; } return 0; }
相关文章推荐
- UVa 10596 - Morning Walk, 赤裸裸的欧拉回路
- Morning Walk - UVa 10596 欧拉回路
- UVA 10596--Morning Walk
- uva 10596 Morning Walk
- UVa 10596: Morning Walk
- UVA - 10596 Morning Walk
- uva 10596 Morning Walk
- uva 10596 Morning Walk
- uva 10596 - Morning Walk
- UVa 10596 - Morning Walk(无向图,欧拉回路)
- uva 10596 Morning Walk(欧拉回路)
- UVA 10596 - Morning Walk
- uva 10596 - Morning Walk
- UVa 10596 - Morning Walk
- uva 10596 - Morning Walk
- UVA - 10596 - Morning Walk(并查集判断连通图)
- UVA 10596 Morning Walk
- uva 10596 - Morning Walk
- uva 10596 - Morning Walk (欧拉回路~~~)
- uva 10596 Morning Walk