UVA 10054 The Necklace(欧拉回路)
2016-11-09 20:06
447 查看
输出不能顺序输出,如果环中还有一个小环,那么dfs的时候就会回溯,那样的话顺序输出就会错误,但是逆序输出就能保证首位相接。#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int maxc=50+5;
int degree[maxc],vis[maxc][maxc];
#define ss(x) scanf("%d",&x)
#define rep(i,a,b) for(int i=(a);i<(b);i++)
int n;
vector<pair<int,int> > ans;
void euler(int u)
{
for(int v=1;v<=50;v++) if(vis[u][v]){
vis[u][v]--;vis[v][u]--;
euler(v);
ans.push_back(make_pair(u,v));
}
}
int main()
{
int kase=0;
int t;ss(t);
while(t--)
{
memset(degree,0,sizeof(degree));
memset(vis,0,sizeof(vis));
ans.clear();
ss(n);
int u=0,v=0;
rep(i,0,n){
scanf("%d%d",&u,&v);
degree[u]++;degree[v]++;
vis[u][v]++;vis[v][u]++;
}
bool ok=true;
for(int i=1;i<=n;i++) if(degree[i]%2==1) {ok=false;break;}
if(kase) printf("\n");
printf("Case #%d\n",++kase);
if(ok) {euler(u);if(ans.size()!=n) ok=false;}
if(ok==false) printf("some beads may be lost\n");
else for(int i=n-1;i>=0;i--) printf("%d %d\n",ans[i].first,ans[i].second);
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int maxc=50+5;
int degree[maxc],vis[maxc][maxc];
#define ss(x) scanf("%d",&x)
#define rep(i,a,b) for(int i=(a);i<(b);i++)
int n;
vector<pair<int,int> > ans;
void euler(int u)
{
for(int v=1;v<=50;v++) if(vis[u][v]){
vis[u][v]--;vis[v][u]--;
euler(v);
ans.push_back(make_pair(u,v));
}
}
int main()
{
int kase=0;
int t;ss(t);
while(t--)
{
memset(degree,0,sizeof(degree));
memset(vis,0,sizeof(vis));
ans.clear();
ss(n);
int u=0,v=0;
rep(i,0,n){
scanf("%d%d",&u,&v);
degree[u]++;degree[v]++;
vis[u][v]++;vis[v][u]++;
}
bool ok=true;
for(int i=1;i<=n;i++) if(degree[i]%2==1) {ok=false;break;}
if(kase) printf("\n");
printf("Case #%d\n",++kase);
if(ok) {euler(u);if(ans.size()!=n) ok=false;}
if(ok==false) printf("some beads may be lost\n");
else for(int i=n-1;i>=0;i--) printf("%d %d\n",ans[i].first,ans[i].second);
}
return 0;
}
相关文章推荐
- UVA 10054 - The Necklace 欧拉回路
- uva 10054 The Necklace(欧拉回路)
- UVA 10054 - The Necklace 欧拉回路
- (UVa 10054)The Necklace --欧拉回路的判断和输出,DFS
- The Necklace ——UVA - 10054(欧拉回路)
- UVa 10054 - The Necklace 欧拉回路
- uva 10054 The Necklace 欧拉回路
- UVa10054 The Necklace,无向图求欧拉回路
- uva 10054 The Necklace 欧拉回路
- UVA 10054 The Necklace 转化成欧拉回路
- UVA 10054 - The Necklace(欧拉回路)
- UVA10054 The Necklace (输出欧拉回路)
- UVA - 10054 - The Necklace (欧拉回路!!)
- UVA10054 The Necklace(欧拉回路)
- uva 10054 The Necklace(欧拉回路)
- uva 10054 The Necklace 欧拉回路
- uva10054 The Necklace (欧拉回路路径输出 (并查集 + DFS) || (DFS + stack))
- UVA-10054 The Necklace (欧拉回路)
- [UVA 10054]The Necklace[欧拉回路][打印路径]
- uva 10054 The Necklace(欧拉回路)