現在有n (1<=n<=500)個點,m(1<=m<=2500)條邊(雙向),代表現在可以走的通路,比如從a到b和從b到a需要花費c時間,現在在地上出現了w (1<=w<=200)個蟲洞(單向),蟲洞的意義就是你從a到b話費的時間是-c(時間倒流,並且蟲洞是單向的),現在問你從某個點開始走,能否回到從前。
第一行乙個整數f,表示測試組數。 (1<=f<=5)
每組資料第一行,三個用空格隔開的正整數,表示 n,m,w
以下m行,每行三個正整數,表示雙向的正常通路的兩個點和所用的時間。
以下w行,每行三個正整數,表示單向的蟲洞的兩個點和倒流的時間。
對於每組資料。輸出no或yes表示是否可以實現回到起點的過去。
2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8
no
yes
資料規模如題中所述
題解:判負環ooo~
#include#include#include
#include
#include
#include
#include
typedef
long
long
ll;using
namespace
std;
const
int n=12020
;int
yc,tt,n,m,cnt,x,y,z;
inttot[n],dis[n],vis[n],head[n];
struct
nodee[n];
void add(int u,int v,int
w)queue
q;bool
spfa()
}if(tot[v]>=n) return1;}}
return0;
//if(dis[t]!=0x3f3f3f3f) return dis[t];
//else return -1;
}int
main()
for(int i=1;i<=yc;i++)
if(spfa()==1) printf("
yes\n");
else printf("
no\n");
//cout<}
return
0;