请问这里哪里错了?
查看原帖
请问这里哪里错了?
444267
cui_can楼主2021/3/20 15:24

倒序建边,用邻接表

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 1e5 + 10;
vector<int> v[maxn];
int n,m;
int used[maxn],A[maxn];
void DFS(int x,int s){
	if(A[x])return ;
	A[x]=s;
	for(int i=0;i<v[i].size();i++)DFS(v[x][i],s);
}
int main(){
	memset(A,0,sizeof(A));
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		int x,y;scanf("%d%d",&x,&y);
		v[y].push_back(x);
	}
	for(int i=n;i>0;i--)DFS(i,i);
	for(int i=1;i<=n;i++)
		printf("%d ",A[i]);
	printf("\n");
	return 0;
} 
2021/3/20 15:24
加载中...