蒟蒻求助
查看原帖
蒟蒻求助
1029846
simonzzq楼主2023/8/30 22:07

得了十分…………
希望有大佬路过帮忙调调

#include <bits/stdc++.h>
#define me(a,b)memset(a,b,sizeof(a));
using namespace std;
int n,m;
vector <int> edge[100010],dui[100010];
int c[100010];
void dfs(int x)
{
    printf("%d ",x);
    for(int i=0;i<c[x];i++)
        if(!dui[x][edge[x][i]])
            {dui[x][edge[x][i]]=1;dfs(edge[x][i]);}

}
int main()
{
    //freopen("a.in","r",stdin);
    //freopen("a.out","w",stdout);
    int st=1;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int u,v;
        scanf("%d%d",&u,&v);
        edge[u].push_back(v);
        dui[u].push_back(0);
        c[u]++;
    }
    for(int i=1;i<=n;i++)
        sort(edge[i].begin(),edge[i].end());
    int ru[100010],chu[100010];
    me(ru,0);me(chu,0);
    for(int i=1;i<=n;i++)
        for(auto j:edge[i])
            chu[i]++,ru[j]++;
    int x=0,y=0;
    for(int i=1;i<=n;i++)
        if(ru[i]+1==chu[i]){x++;st=i;}
        else if(chu[i]+1==ru[i])y++;
        else if(chu[i]!=ru[i]){puts("No");return 0;}
    if(x>1||y>1){puts("No");return 0;}
    dfs(st);
    return 0;
}

2023/8/30 22:07
加载中...