P2731 [USACO3.3] 骑马修栅栏 Riding the Fences

原题链接

题解

贪心走最小的点,由于每个点都有偶数条边,所以能进入就一定能出去

code

#include<bits/stdc++.h>
using namespace std;
struct node
{
    int to,id;
};
vector<node> G[505];
int late[505]={0};
int vis[1044]={0};
int start=1,finish;

stack<int> st;
int n,m;


void ss(int now)
{
    for(int i=late[now];i<G[now].size();i=late[now])
    {
        late[now]=i+1;
        int to=G[now][i].to,id=G[now][i].id;
        if(!vis[id])
        {
            vis[id]=1;
            ss(to);
        }
    }

    st.push(now);
}


int main()
{
    cin>>m;

    for(int i=1;i<=m;i++)
    {
        int u,v;
        cin>>u>>v;
        G[u].push_back({v,i});
        G[v].push_back({u,i});
        n=max(n,u);
        n=max(n,v);
    }


    int flag=0;
    for(int i=1;i<=n;i++)
    {
        sort(G[i].begin(),G[i].end(),[](const node &a,const node &b){return a.to<b.to;});
        int con=G[i].size();
        if(con&1)
        {
            if(!flag)
            {
                start=i;
                flag=1;
            }
            else
            {
                finish=i;
            }
        }
    }

    ss(start);

    while(st.size())
    {
        cout<<st.top()<<endl;
        st.pop();
    }
    return 0;
}

posted @   纯粹的  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示