Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33818 | LYLAKIOIAKIOI | 【S】T3 | C++ | 通过 | 100 | 252 MS | 572 KB | 962 | 2024-10-23 08:07:50 |
//100 #include<bits/stdc++.h> #define PII pair<int,int> #define fi first #define se second #define mk make_pair using namespace std; const int N=5000,INF=1e9; vector<PII> E[N]; int d[N];bool vis[N]; int n,m; bool bf(){ for(int i=1;i<=n;i++) vis[i]=0,d[i]=INF; d[1]=0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ for(auto ed:E[j]){ if(d[j]+ed.se<d[ed.fi]) d[ed.fi]=d[j]+ed.se; } } }for(int i=1;i<=n;i++){ for(auto ed:E[i]){ if(d[i]+ed.se<d[ed.fi]) return 1; } }return 0; }void rev(){ for(int i=1;i<=n;i++) for(auto &ed:E[i]) ed.se=-ed.se; } int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ int u,v;char ch;cin>>u>>v>>ch; int w=1;if(ch==')') w=-1; E[u].push_back(mk(v,w)); }int r1=0,r2=0; r1=bf();rev();r2=bf(); if(!(r1^r2)) cout<<"Yes"; else cout<<"No"; return 0; }