求助!
查看原帖
求助!
636849
HiCode2009楼主2022/9/16 18:59

93分,第6个点WA了

#include<bits/stdc++.h>
using namespace std;
const int Inf=2147483647;
int n,ml,md,ax[10005],bx[10005],dx[10005],ay[10005],by[10005],dy[10005],d[10005];
bool flag;
void update(int &x,int y)
{
	if(x>y)
	{
		x=y;
		flag=true;
	}
}
void Ford()
{
	for(int k=0;k<=n;k++)
	{
		flag=false;
		for(int i=0;i+1<n;i++)
			if(d[i+1]<Inf)
				update(d[i],d[i+1]);
		for(int i=0;i<ml;i++)
			if(d[ax[i]-1]<Inf)
				update(d[bx[i]-1],d[ax[i]-1]+dx[i]);
		for(int i=0;i<md;i++)
			if(d[by[i]-1]<Inf)
				update(d[ay[i]-1],d[by[i]-1]-dy[i]);
	}
}
void solve()
{
	fill(d,d+n,0);
	Ford();
	if(flag)
	{
		cout<<"-1";
		return;
	}
	fill(d,d+n,Inf);
	d[0]=0;
	Ford();
	int r=d[n-1];
	if(r==Inf) r-=2;
	cout<<r;
}
int main()
{
	cin>>n>>ml>>md;
	for(int i=0;i<=ml-1;i++) cin>>ax[i]>>bx[i]>>dx[i];
	for(int i=0;i<=md-1;i++) cin>>ay[i]>>by[i]>>dy[i];
	solve();
	return 0;
}
2022/9/16 18:59
加载中...