首页 > 其他 > 详细

Mail Stamps CodeForces - 29C

时间:2021-09-02 04:58:53      阅读:12      评论:0      收藏:0      [点我收藏+]

原题链接
考察:欧拉路径,离散化
思路:
??定睛一看这不欧拉路径吗,然后套板子即可....

Code

#include <iostream> 
#include <cstring>
#include <map>
using namespace std;
typedef pair<int,int> PII;
const int N = 100010;
int n,h[N<<1],idx,tot,id[N],d[N<<1];
int ans[N<<1],cnt;
map<int,int> vis;
struct Road{
	int to,ne;
	bool exist;
}road[N<<1]; 
void add(int a,int b)
{
	road[idx].exist = 1,road[idx].to = b,road[idx].ne = h[a],h[a] = idx++;
}
void dfs(int u)
{
	for(int& i=h[u];~i;)
	{
		if(!road[i].exist)
		{
			i = road[i].ne;
			continue;
		}
		int v = road[i].to;
		road[i^1].exist = 0;
		i = road[i].ne;
		dfs(v);
		ans[++cnt] = id[v];
	}
}
int main()
{
	scanf("%d",&n);
	memset(h,-1,sizeof h);
	for(int i=1;i<=n;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		if(!vis.count(a)) id[++tot] = a,vis[a] = tot;
		if(!vis.count(b)) id[++tot] = b,vis[b] = tot;
		add(vis[a],vis[b]),add(vis[b],vis[a]);
		d[vis[a]]++;
		d[vis[b]]++;
	}
	for(int i=1;i<=tot;i++)
	  if(d[i]&1)
	  {
	  	dfs(i);
	  	ans[++cnt] = id[i];
	  	break;
	  }
	for(int i=cnt;i>=1;i--)
	  printf("%d ",ans[i]);
	return 0;
}

Mail Stamps CodeForces - 29C

原文:https://www.cnblogs.com/newblg/p/15206619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!