玄关,求调!!!
查看原帖
玄关,求调!!!
1271969
Nahida_Buer楼主2024/8/9 11:43
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int read(){
	int x=0,f=1;char c=getchar();
	while(c>'9' or c<'0'){if(c=='-')f=-1; c=getchar();}
	while(c<='9' and c>='0'){x=x*10+c-'0';c=getchar();}
	return x*f;
}
int n,m,rd[1600],f[1600],lj[1600][1600];

vector<int>p[1600];
queue<int>out;
ll ans=0;
int main(){
	n=read();m=read();
	for(int i=1;i<=n;i++)f[i]=-1e9;
	for(int i=1;i<=m;i++){
		int a,b,c;
		a=read();b=read();c=read();
		p[a].push_back(b);
		rd[b]++;
		lj[a][b]=max(c,lj[a][b]);
	}
	f[1]=0;
	for(int i=1;i<=n;i++){
		if(rd[i]==0)out.push(i);
	}

	while(!out.empty()){
		int c=out.front();
		out.pop();
		for(int i:p[c]){
			rd[i]--;
			f[i]=max(f[i],f[c]+lj[c][i]);
			if(rd[i]==0){
				out.push(i);
			}
		}
	}
	if(f[n]!=-1e9)cout<<f[n];
	else cout<<-1;
}

P1807最长路 82分求调,用拓补排序+动规做的,前两个样例点WA掉,其他AC

2024/8/9 11:43
加载中...