求助,样例过不去但80pts
查看原帖
求助,样例过不去但80pts
1344661
inscape楼主2025/7/19 10:52
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,m,ans[N];
vector<int> a[N];
int in[N],b[N];
void topsort(){
	vector<int> v;
	queue<int> q;
	for(int i=1;i<=m;i++){
		if(in[i]==0){
			ans[i]=b[i];
			q.push(i);
		} 
	}
	while(!q.empty()){
		int u=q.front();
		q.pop();
		v.push_back(u);
		for(auto t:a[u]){
			ans[t]=max(ans[u]+b[t],ans[t]);
			if(--in[t]==0) q.push(t);
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>b[i];
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		a[v].push_back(u);
		in[u]++;
	}
	topsort();
	int maxn=-1;
	for(int i=1;i<=n;i++) maxn=max(maxn,ans[i]);
	cout<<maxn;
	return 0;
}

WA #11 #77

2025/7/19 10:52
加载中...