Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33835 | 22fhq | 【S】T3 | C++ | 通过 | 100 | 285 MS | 468 KB | 1017 | 2024-10-23 09:50:56 |
//100 #include<bits/stdc++.h> using namespace std; #define int long long int n,m,cnt; struct edge{ int u,v,w; }; edge e[8005]; int dis[4005]; bool negative_ring(){ for(int i=1;i<=n;i++)dis[i]=2e9; dis[1]=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(dis[e[j].v]>dis[e[j].u]+e[j].w){ dis[e[j].v]=dis[e[j].u]+e[j].w; } } } for(int j=1;j<=m;j++){ if(dis[e[j].v]>dis[e[j].u]+e[j].w){ return 1; } } return 0; } signed main(){ //freopen("walk.in","r",stdin); //freopen("walk.out","w",stdout); cin>>n>>m; for(int i=1;i<=m;i++){ int u,v; char w; cin>>u>>v>>w; if(w=='(')e[i]={u,v,1}; else e[i]={u,v,-1}; } bool nr=negative_ring(); for(int i=1;i<=m;i++)e[i].w=-e[i].w; bool pr=negative_ring(); if(nr^pr)cout<<"No"<<endl; else cout<<"Yes"<<endl; return 0; }