John's trip
2015-06-05 23:55
176 查看
http://poj.org/problem?id=1041
#include<iostream>
#include<string>
using namespace std;
int map[50][2000],adj[50][2000],num[50],mark[2000],stk[2000],idx,S,top;
int cmp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
int Min(int x,int y)
{
return x<y?x:y;
}
void dfs(int u)
{
int i,v,e;
for(i=1;i<=num[u];i++)
{
e=adj[u][i];
if(!mark[e])
{
v=map[u][e];
mark[e]=1;
dfs(v);
stk[++top]=e;
}
}
}
int main()
{
int x,y,z,i,maxN;
// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
while(cin>>x>>y,x && y)
{
memset(num,0,sizeof(num));
cin>>z;
S=Min(x,y);
adj[x][++num[x]]=z;
adj[y][++num[y]]=z;
map[x][z]=y;
map[y][z]=x;
while(cin>>x>>y,x && y)
{
cin>>z;
adj[x][++num[x]]=z;
adj[y][++num[y]]=z;
map[x][z]=y;
map[y][z]=x;
}
for(i=1;;i++)
{
if(num[i]==0)
break;
if(num[i] & 1)
break;
}
if(num[i]!=0)
{
cout<<"Round trip does not exist."<<endl;
continue;
}
maxN=i-1;
for(i=1;i<=maxN;i++)
qsort(adj[i]+1,num[i],sizeof(int),cmp);
memset(mark,0,sizeof(mark));
top=0;
dfs(S);
for(i=top;i>1;i--)
cout<<stk[i]<<" ";
cout<<stk[i]<<endl;
}
return 0;
}
http://poj.org/problem?id=1041
#include<iostream>
#include<string>
using namespace std;
int map[50][2000],adj[50][2000],num[50],mark[2000],stk[2000],idx,S,top;
int cmp(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
int Min(int x,int y)
{
return x<y?x:y;
}
void dfs(int u)
{
int i,v,e;
for(i=1;i<=num[u];i++)
{
e=adj[u][i];
if(!mark[e])
{
v=map[u][e];
mark[e]=1;
dfs(v);
stk[++top]=e;
}
}
}
int main()
{
int x,y,z,i,maxN;
// freopen("C:\\Users\\John\\Desktop\\hi.txt","r",stdin);
while(cin>>x>>y,x && y)
{
memset(num,0,sizeof(num));
cin>>z;
S=Min(x,y);
adj[x][++num[x]]=z;
adj[y][++num[y]]=z;
map[x][z]=y;
map[y][z]=x;
while(cin>>x>>y,x && y)
{
cin>>z;
adj[x][++num[x]]=z;
adj[y][++num[y]]=z;
map[x][z]=y;
map[y][z]=x;
}
for(i=1;;i++)
{
if(num[i]==0)
break;
if(num[i] & 1)
break;
}
if(num[i]!=0)
{
cout<<"Round trip does not exist."<<endl;
continue;
}
maxN=i-1;
for(i=1;i<=maxN;i++)
qsort(adj[i]+1,num[i],sizeof(int),cmp);
memset(mark,0,sizeof(mark));
top=0;
dfs(S);
for(i=top;i>1;i--)
cout<<stk[i]<<" ";
cout<<stk[i]<<endl;
}
return 0;
}
相关文章推荐
- windows API 生成一个窗口简单例子
- 查询出每个雇员的姓名,工资,部门名称,工资在公司的等级及其领导的姓名,领导的工资,以及领导所对应的等级
- [LeetCode] Surrounded Regions 包围区域
- [note] java与DB
- Java for LeetCode 168 Excel Sheet Column Title
- WorldWind源码剖析系列:代理助手类ProxyHelper
- 纳什均衡
- 轻量级java web服务器--tomcat
- swift基础控件的创建
- POJ 1006 生理周期 【中国剩余定理】
- lucene入门实例
- 为什么转置512x512矩阵,会比513x513矩阵慢很多?
- Qt for android 截屏、Qml保存图片到本地
- 哈希(2) - 垂直打印一棵二叉树(使用哈希表实现)
- HDU 3790 最短路径问题 【求花费最少的最短路径】
- 结构体变相实现数组赋值
- Java学习篇之---LinkedList
- c++的句柄
- 结构体变相实现数组赋值
- 前端模块化