点击查看代码
#include <bits/stdc++.h>
using namespace std;
int h[100005],nx[100005],t[100005],cnt;
int ans[100005];
int read1()
{
char cc=getchar();
while(!(cc>=48&&cc<=57))
{
if(cc=='-')
{
break;
}
cc=getchar();
}
bool f=false;
int s=0;
if(cc=='-')
{
f=true;
}
else
{
s=cc-48;
}
while(1)
{
cc=getchar();
if(cc>=48&&cc<=57)
{
s=s*10+cc-48;
}
else
{
break;
}
}
if(f==true)
{
s=-s;
}
return s;
}
void add(int u,int v)
{
cnt++;
nx[cnt]=h[u];
h[u]=cnt;
t[cnt]=v;
}
void dfs(int n1)
{
for(int i=h[n1];i!=0;i=nx[i])
{
int v=t[i];
if(!ans[v])
{
ans[v]=ans[n1];
dfs(v);
}
}
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v;
u=read1();
v=read1();
add(v,u);
}
for(int i=n;i>=1;i--)
{
if(!ans[i])
{
ans[i]=i;
dfs(i);
}
}
for(int i=1;i<n;i++)
{
printf("%d ",ans[i]);
}
cout<<ans[n]<<endl;
return 0;
}