才学的图论,还不知道哪里出现问题QAQ!我觉得图论和树很像,没啥区别,于是WA了4个点。分值:2/3
#include<bits/stdc++.h>
using namespace std;
struct no{
int m;
vector <int> c;
}s[1011];
int n,m,a,b;
bool q[1011];
int dfs(int x){
if(q[x])return s[x].m;
q[x]=1;
s[x].m=x;
for(int i=0;i<s[x].c.size();i++){
s[x].m=max(s[x].m,dfs(s[x].c[i]));
}
return s[x].m;
}
int main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d %d",&a,&b);
s[a].c.push_back(b);
}
for(int i=1;i<=n;i++){
if(!q[i])
s[i].m=dfs(i);
printf("%d ",s[i].m);
}
printf("\n");
return 0;
}