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

题意:给定一些边,求出其中的一条通路。保证那些边实在同一条线段上的。

 #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;
}


你可能感兴趣的:(Codeforces Beta Round #29 (Div. 2, Codeforces format), problem: (C) Mail Stamps 图论)