您的位置:首页 > 大数据 > 人工智能

Codeforces Beta Round #29 (Div. 2, Codeforces format), problem: (C) Mail Stamps 图论

2013-02-25 13:56 651 查看
题意:给定一些边,求出其中的一条通路。保证那些边实在同一条线段上的。

#include<cstdio>
#include<utility>
#include<map>
using namespace std;
map<int,int>node;
const int LMT=100003;
int mp[LMT][3],see[LMT],du[LMT],cnt;
int main(void)
{
    int n,u,v,x,y,s=0,pre=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d%d",&u,&v);
        if(node.find(u)==node.end())node.insert(make_pair(u,cnt++));
        if(node.find(v)==node.end())node.insert(make_pair(v,cnt++));
        x=node[u];y=node[v];
        mp[x][++mp[x][0]]=y;
        mp[y][++mp[y][0]]=x;
        see[x]=u;see[y]=v;
        du[x]++;du[y]++;
    }
    for(s=0;s<cnt&&du[s]!=1;s++);
    for(int i=0;i<cnt;i++)
    {
        printf("%d ",see[s]);
        if(mp[s][1]==pre)
        {
            pre=s;s=mp[s][2];
        }
        else
        {
            pre=s;
            s=mp[s][1];
        }
    }
    printf("\n");
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐