POJ 1041 求解欧拉回路方案
来源:互联网 发布:p2p网络摄像机如何远程 编辑:程序博客网 时间:2024/06/10 23:17
这题模板太神了……几乎不用自己再写什么,只要把图建好就行了……
对了,刚才做了后琦神说了欧拉回路了汉密顿回路才记得其区别:欧拉回路是一笔画问题,即边走且只走一次;而汉密顿回路是点走且只下次一次。
#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <cmath>#include <deque>#include <vector>#include <list>#include <queue>#include <string>#include <cstring>#include <map>#include <stack>#include <set>#define PI acos(-1.0)#define mem(a,b) memset(a,b,sizeof(a))#define sca(a) scanf("%d",&a)#define sc(a,b) scanf("%d%d",&a,&b)#define pri(a) printf("%d\n",a)#define lson i<<1,l,mid#define rson i<<1|1,mid+1,r#define MM 1000005#define MN 2000#define INF 1000000009#define eps 1e-7using namespace std;typedef long long ll;int f[MN];vector<int>path;vector< pair<int,int> >adj[MN];bool vis[MM];int find(int x){ return x==f[x]?x:f[x]=find(f[x]);}void add(int x,int y,int z){ adj[x].push_back(make_pair(z,y)); adj[y].push_back(make_pair(z,x));}void dfs(int u){ for(int i=0; i<adj[u].size(); i++) if(!vis[adj[u][i].first]) { vis[adj[u][i].first]=true; dfs(adj[u][i].second); path.push_back(adj[u][i].first); }}bool eluer(){ int i,j,origin=-1; for(i=0; i<MN; i++) f[i]=i; for(i=0; i<MN; i++) for(j=0; j<adj[i].size(); j++) f[find(i)]=find(adj[i][j].second); for(i=0; i<MN; i++) if(adj[i].size()) { if(adj[i].size()%2==1) return false; if(origin==-1) origin=i; if(find(i)!=find(origin)) return false; sort(adj[i].begin(),adj[i].end()); } path.clear(); mem(vis,false); if(origin!=-1) dfs(origin); reverse(path.begin(),path.end()); return true;}int main(){ int x,y,z,i,len; while(sc(x,y)&&(x||y)) { for(i=0;i<MN;i++) adj[i].clear(); sca(z),add(x,y,z); while(sc(x,y)&&(x||y)) sca(z),add(x,y,z); if(eluer()) { len=path.size(); for(i=0;i<len;i++) printf("%d%c",path[i],i!=len-1?' ':'\n'); } else puts("Round trip does not exist."); } return 0;}
0 0
- POJ 1041 求解欧拉回路方案
- poj 1780 欧拉回路求解
- 欧拉回路求解
- 欧拉回路,poj 1041
- 欧拉回路,poj 1041
- POJ 1041 欧拉回路
- 欧拉回路路径求解
- SGU 101 && POJ 1041 欧拉路径/欧拉回路
- 求解欧拉回路的算法
- 多米诺骨牌 欧拉回路的求解
- 欧拉回路求解 Fleury模板
- POJ 1392 欧拉回路
- POJ 2230 (欧拉回路)
- poj 2337 欧拉回路
- poj 2230 欧拉回路
- POJ 2230 欧拉回路
- POJ 2337 欧拉回路
- POJ 1386 欧拉回路
- hdu 1239 Calling Extraterrestrial Intelligence Again
- 深入探讨 Java 类加载器
- 01背包poj3624
- Perl + mysql
- 常量的指针,常指针,指向常量的常指针之间的区别
- POJ 1041 求解欧拉回路方案
- 人人都能参加第30届校田径运动会了 2555
- 堆和栈的区别?
- YARN工作流程
- java转换中文汉字 ChineseEncoding
- andorid出现OOM的解决办法
- ListView优化
- C函数传递二维数组
- WebForm知识点总结