DFS 30TLE 求调
查看原帖
DFS 30TLE 求调
1366931
he_chen_hao楼主2025/2/8 09:45
// Problem: D - 图的遍历
// Contest: Virtual Judge - 第4节:图
// URL: https://vjudge.net/contest/684269#problem/D
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fir first
#define sec second
#define fst ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
const int N=1e5+5,INF=0x3f3f3f3f3f3f3f3f;
int ans=0;
int n,m;
vector<int>e[N];
int fa[N];
int vis[N];
void f(int x){
	for(auto sb:e[x]){
		if(vis[sb])continue;
		fa[sb]=max(fa[sb],fa[x]);
		vis[sb]=1;
		f(sb);
	}
}
signed main(){
	fst
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		e[v].push_back(u);
	}
	for(int i=n;i>=1;i--){
		sort(e[i].begin(),e[i].end());
	}
	for(int i=1;i<=100;i++){
		for(int j=n;j>=1;j--){
			fa[j]=max({fa[j],j});
			memset(vis,0,sizeof(vis));
			f(j);
		}
	}
	for(int i=1;i<=n;i++){
		cout<<fa[i]<<" ";
	}
	return 0;
}


2025/2/8 09:45
加载中...