社区讨论

参阅无数资料后,仍然RE求助!

UVA302John's trip参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo4ct05x
此快照首次捕获于
2023/10/24 21:19
2 年前
此快照最后确认于
2023/11/02 11:31
2 年前
查看原帖
本人这份代码在 acwing 上可 AC,在 UKERE,已借鉴这篇帖子(换两次行,行末不能有空格等)做了修改,仍然 RE,求调!
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=50;
const int M=2000; 
int n=44,m=1995;
int home;
int deg[N];
int vis[M];
int ans[M],cnt;
struct Edge{
	int ver,id;
	friend bool operator<(const Edge A,const Edge B){
		return A.id<B.id;
	}
};
vector<Edge> graph[N];
void init(){
	memset(deg,0,sizeof(deg));
	for(int i=1;i<=n;i++) graph[i].clear();
	cnt=0;
}
void add(int u,int v,int w){
	graph[u].push_back((Edge){v,w});
	deg[v]++;
}
int solve(int u){
	for(Edge e:graph[u]){
		int v=e.ver,d=e.id;
		if(vis[d]) continue;
		vis[d]=1;
		solve(v);
		ans[++cnt]=d;
	}
}
int main(){
	int u,v,w;
	while(~scanf("%d%d",&u,&v)&&u&&v){
		init();
		scanf("%d",&w);
		vis[w]=0;
		add(u,v,w),add(v,u,w);
		home=min(u,v);
		while(~scanf("%d%d",&u,&v)&&u&&v){
			scanf("%d",&w);
			vis[w]=0;
			add(u,v,w),add(v,u,w);
		}
		for(int i=1;i<=n;i++) sort(graph[i].begin(),graph[i].end());
		int flag=0;
		for(int i=1;i<=n;i++){
			if(deg[i]&1) flag=1;
		}
		if(flag){printf("Round trip does not exist.\n\n");continue;}
		solve(home);
		for(int i=cnt;i>1;i--) printf("%d ",ans[i]);
		printf("%d\n\n",ans[1]);
	}
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...