Submission #1226737

#TimeUsernameProblemLanguageResultExecution timeMemory
1226737ereringTraffic (CEOI11_tra)C++20
100 / 100
732 ms62304 KiB
#include <bits/stdc++.h> #define pb push_back #define int long long #define endl '\n' using namespace std; using ll=long long; const int MAXN=3e5+5,inf=2e18; vector<int> adj[MAXN],rev[MAXN]; pair<int,int> p[MAXN]; bool vis[MAXN]; int mn[MAXN],mx[MAXN]; void dfs(int node){ vis[node]=1; for(auto i:adj[node]){ if(!vis[i])dfs(i); } } void dfs2(int node,int cnt){ mn[node]=cnt; for(auto i:rev[node]){ if(mn[i]==0)dfs2(i,cnt); } } void dfs3(int node,int cnt){ mx[node]=cnt; for(auto i:rev[node]){ if(mx[i]==0)dfs3(i,cnt); } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m,a,b; cin>>n>>m>>a>>b; vector<pair<int,int>> bro; for(int i=1;i<=n;i++){ cin>>p[i].first>>p[i].second; if(p[i].first==0)bro.pb({p[i].second,i}); } for(int i=0;i<m;i++){ int c,d,k; cin>>c>>d>>k; adj[c].pb(d); rev[d].pb(c); if(k==2){ adj[d].pb(c); rev[c].pb(d); } } for(int i=1;i<=n;i++){ if(p[i].first==0 && !vis[i])dfs(i); } vector<pair<int,int>> vec; for(int i=1;i<=n;i++){ if(p[i].first==a && vis[i])vec.pb({p[i].second,i}); } cout<<endl; sort(vec.begin(),vec.end()); for(int i=0;i<vec.size();i++){ if(mn[vec[i].second]==0)dfs2(vec[i].second,i+1); } for(int i=vec.size()-1;i>=0;i--){ if(mx[vec[i].second]==0)dfs3(vec[i].second,i+1); } sort(bro.begin(),bro.end()); for(int i=bro.size()-1;i>=0;i--){ int id=bro[i].second; cout<<(mx[id]==0?0:mx[id]-mn[id]+1)<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...