CCF 送货 (欧拉回路+字典序打印路径)
2016-10-31 19:25
405 查看
题意:通过题意很容易判断是一个判断欧拉回路并打印路径
注意点有判断欧拉回路时因为要保证走过所有结点,所以要考虑到孤点和孤边的情况,需要dfs1判断;再就是因为要求最小字典序打印,所以要在打印路径时对存边的vector排序一下即可
代码如下:
注意点有判断欧拉回路时因为要保证走过所有结点,所以要考虑到孤点和孤边的情况,需要dfs1判断;再就是因为要求最小字典序打印,所以要在打印路径时对存边的vector排序一下即可
代码如下:
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<vector> #include<map> using namespace std; const int maxn = 10000+7; int n,m; int d[maxn],cp[maxn]; bool vis[maxn][maxn]; vector<int> road; vector<int> g[maxn]; void dfs(int u) { int vs = g[u].size(); for(int i=0; i<vs; i++) { int v = g[u][i]; if(!vis[u][v]) { vis[u][v] = vis[v][u] = 1; dfs(v); road.push_back(v); } } } void dfs1(int a) { cp[a]=1; vector<int>::iterator it; for(it=g[a].begin();it!=g[a].end();it++) { if(!cp[*it]) { dfs1(*it); } } } int main() { scanf("%d%d",&n,&m); memset(d,0,sizeof(d)); memset(vis,0,sizeof(vis)); memset(cp,0,sizeof(cp)); for(int i=0; i<m; i++) { int u,v; scanf("%d%d",&u,&v); d[u]++, d[v]++; g[u].push_back(v); g[v].push_back(u); } bool flag = false; int f = 0; dfs1(1); for(int i=1; i<=n; i++) { if(d[i]%2 == 1) f++; if(d[i] == 0) flag = true; if(cp[i] == 0) flag = true; } if(f == 2 && d[1]%2 == 0) { printf("-1\n"); return 0; } if(flag) { printf("-1\n"); return 0; } if(f == 0 || f == 2) { for(int i=1; i<=n; i++) { sort(g[i].begin(),g[i].end()); } dfs(1); printf("1"); int vs = road.size(); for(int i=vs-1; i>=0; i--) printf(" %d",road[i]); } else printf("-1\n"); return 0; }
相关文章推荐
- CCF 201512-4 送货(欧拉路径+字典序最小)
- CCF 送货 (欧拉路径+字典序最小 80分)
- CCF送货 欧拉路的判断+Fleury算法输出欧拉路的字典序最小的路径
- CCF第四题无向图打印路径
- CCF——送货(欧拉路径)
- CCF 201512-4 送货(欧拉路径+字典序最小)
- CCF-201512-4 送货(欧拉路径)
- CCF从业资格认证 201604-3 路径解析
- 最短路打印路径SPFA(good)uva11374
- UVA - 624CD(递推+ 路径打印)
- Tsinsen-A1105===数据很弱, 我用dfs(打印路径+发现自身的毛病)过了, 这题输入部分比较有趣。。。
- 程序员面试金典: 9.4树与图 4.9在二叉树中,打印结点数值总和等于给定值的所有路径
- ccf 送货
- hdu FatMouse's Speed(DP)(打印路径)
- UVA 624 CD(01背包+dp打印路径)
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- ccf认证题-路径解析
- 每天学习一算法系列(6) (输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径)
- POJ A Knight's Journey(2488) -dfs&打印路径