Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
33815 | A21μΘ_wjy | 【S】T3 | C++ | 通过 | 100 | 254 MS | 5500 KB | 1452 | 2024-10-22 21:27:25 |
#include<bits/stdc++.h> #define int long long #define PII pair<int,int> #define mp make_pair #define fir first #define sec second #define lc(p) ((p)<<1) #define rc(p) ((p)<<1|1) using namespace std; const int maxn=1e5+7; const int INF=1e12; int n,m; struct Edge{ int v,w; Edge(int V=0,int W=0){v=V,w=W;} }; vector<Edge> E[maxn]; vector<Edge> G[maxn]; int dis[maxn]; bool IQ[maxn]; int cnt[maxn]; bool SPFA(int S,bool tp){ for(int i=1;i<=n;i++)dis[i]=INF,IQ[i]=0,cnt[i]=0; IQ[S]=1;dis[S]=0; queue<int> q;q.push(S); while(!q.empty()){ int u=q.front();q.pop(); IQ[u]=0; for(auto e:(tp==1?E[u]:G[u])){ int v=e.v,w=e.w; if(w+dis[u]<dis[v]){ dis[v]=dis[u]+w; if((cnt[v]=cnt[u]+1)>=n)return 1; if(!IQ[v])IQ[v]=1,q.push(v); } } } return 0; } signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifndef ONLINE_JUDGE freopen("1.in","r",stdin); freopen("1.out","w",stdout); #endif cin>>n>>m; for(int i=1;i<=m;i++){ int u,v;char c; cin>>u>>v>>c; int t=(c=='('?1:-1); E[u].push_back(Edge(v,t));G[u].push_back(Edge(v,-t)); } bool CN=SPFA(1,0),CP=SPFA(1,1); if(CN^CP){ cout<<"No"<<endl; return 0; } else{ cout<<"Yes"<<endl; return 0; } }