10分求助
查看原帖
10分求助
732248
Kristeen楼主2023/12/21 16:16

动态数组存边,反向连边,bfs

#include<bits/stdc++.h>
using namespace std;
int n,m,u,v;
vector<int>vt[100001];
queue<int>q;
bool vis[100001];
int maxn[100001];
int main(){
	ios::sync_with_stdio(0);
	cin>>n>>m;
	while(m--){
		cin>>u>>v;
		vt[v].push_back(u);
	}
	for(int i=n;i>=1;i--){
		if(maxn[i])continue;
		q.push(i);
		memset(vis,0,n);
		vis[i]=1;
		while(!q.empty()){
			u=q.front();
			maxn[u]=i;
			q.pop();
			for(int j=0;j<vt[u].size();j++){
				if(!vis[vt[u][j]]){
					vis[vt[u][j]]=1;
					q.push(vt[u][j]);
				}
			}
		}
	}
	for(int i=1;i<=n;i++)cout<<maxn[i]<<" ";
} 

记录

还有,我12月21日发的,一点开发现主页出问题了,你们有吗?

2023/12/21 16:16
加载中...