78分求助,#5#6WA
  • 板块P1807 最长路
  • 楼主NoNs
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/26 20:29
  • 上次更新2023/11/4 08:53:28
查看原帖
78分求助,#5#6WA
352661
NoNs楼主2021/8/26 20:29
#include<bits/stdc++.h>
using namespace std;
vector<int> kk[1501];
queue<int> qq;
int in[1501];
int ans[1501];
struct node{
	int idx;
	int v;
};
node tt[50001];
int flag[1501];
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	int a;
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&a,&tt[i].idx,&tt[i].v);
		kk[a].push_back(i);
		in[tt[i].idx]++;
	}
    for(int i=1;i<=n;i++)
    {
    	if(in[i]==0)
    	qq.push(i);
	}
	flag[1]=1;
	while(qq.size())
	{
		int t=qq.front();
		qq.pop();
		for(int i=0;i<kk[t].size();i++)
		{
			int newidx=tt[kk[t][i]].idx;
			int newv=tt[kk[t][i]].v;
			if(flag[t]==1)
			flag[newidx]=1;
			ans[newidx]=max(ans[newidx],ans[t]+newv);
			in[newidx]--;
			if(in[newidx]==0)
			qq.push(newidx);
		}
	}
	if(flag[n]==0)
	printf("-1");
	else
	printf("%d",ans[n]);
}

跪谢大佬orz

2021/8/26 20:29
加载中...