题解
2023-07-15 10:23:07
发布于:上海
16阅读
0回复
0点赞
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>1
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define IOS ios_base::sync_with_stdio(0); cin.tie(0)
#define Mod 1000000007
#define eps 1e-6
#define ll long long
#define INF 0x3f3f3f3f
#define MEM(x,y) memset(x,y,sizeof(x))
#define Maxn 500+5
#define P pair<int,int>
using namespace std;
int N,M,W;
int S,E,T;
int d[Maxn][Maxn];
void init()
{
MEM(d,INF);
for(int i=1; i<=N; i++)
d[i][i]=0;
}
bool Floyd()
{
int i,j,k;
for(k=1; k<=N; k++)
{
for(i=1; i<=N; i++)
{
for(j=1; j<=N; j++)
{
if(d[i][j]>d[i][k]+d[k][j])
d[i][j]=d[i][k]+d[k][j];
}
if(d[i][i]<0)
return 1;
}
}
return 0;
}
int main()
{
IOS;
int F = 1;
while(F--)
{
cin>>N>>M>>W;
init();
for(int i=0; i<M; i++)
{
int x,y,z;
cin>>x>>y>>z;
if(z<d[x][y])
d[x][y]=d[y][x]=z;
}
for(int i=0; i<W; i++)
{
int x,y,z;
cin>>x>>y>>z;
d[x][y]=-z;
}
if(Floyd())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个