SCU2016-01 J 题 欧拉路径
2016-09-04 23:21
281 查看
分析
只有七中数字,那么图中的边数也不会太多。直接dfs去找一条欧拉路径就可以了。。。欧拉回路和欧拉路径都可以直接dfs找
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define pr(x) cout << #x << ": " << x << " " #define pl(x) cout << #x << ": " << x << endl; struct node { int from; int to; int next; int w; int num; int flag; } e[2000+50]; int ans[150]; int head[10]; int degree[10]; int n,cont,ok,contz; void add(int from,int to) { e[cont].from=from; e[cont].to=to; e[cont].next=head[from]; e[cont].num=cont; e[cont].flag=0; head[from]=cont++; } void Dfs(int x) { for(int i=head[x];i!=-1;i=e[i].next) { if(e[i].flag==0) { e[i].flag=1; e[i^1].flag=1; Dfs(e[i].to); ans[contz++]=i; } } } int main() { int n; while(~scanf("%d",&n)) { int pos=0; cont=0; contz=0; memset(head,-1,sizeof(head)); for(int i=0;i<n;i++) { int x,y; scanf("%d%d",&x,&y); add(x,y); add(y,x); pos=x; degree[x]++; degree[y]++; } int tt=0; for(int i=0;i<=6;i++) { if(degree[i]%2==1) { tt++; pos=i; } } if(tt!=2&&tt!=0) { printf("No solution\n"); } else { Dfs(pos); if(contz!=n) { printf("No solution\n"); } else { for(int i=0;i<n;i++) { printf("%d ",ans[i]/2+1); if(ans[i]%2==0) { printf("-\n"); } else printf("+\n"); } } } } }
相关文章推荐
- SCU2016-04 G题 01trie树第k大,树上异或路径
- SGU 101 Domino(欧拉路径)
- HDU5883 欧拉路径与欧拉回路的判定
- UVA 624 CD(01背包,要记录路径)
- poj2531(trie + 欧拉路径判定)
- POJ 1392 Ouroboros Snake(数位欧拉:输出路径)
- POJ 2230 Watchcow 欧拉路径 DFS
- Hiho : 欧拉路径
- 混合图欧拉路径
- POJ 1386 Play on Words(有向图欧拉路径并查集判定)
- CodeForces - 789D Weird journey 【思维 + 欧拉路径计数】
- hiho 50 Fleury算法求欧拉路径
- CF 367C Sereja and the Arrangement of Numbers(欧拉路径)
- HDU3018 Ant Trip 欧拉路径
- 图论欧拉路径问题(单词接龙)
- 欧拉路径问题 (附POJ 1041 POJ 2337)
- multipath多路径实验01-构建iSCSI模拟环境
- poj2337Catenyms(有向欧拉图:输出欧拉路径)
- UVA624(01背包 + 路径打印)
- 【欧拉路径(有向图)】poj 1386 play on words