제출 #449497

#제출 시각아이디문제언어결과실행 시간메모리
449497ritul_kr_singhTraffic (CEOI11_tra)C++17
100 / 100
1122 ms53024 KiB
#include <bits/stdc++.h> using namespace std; #define sp << ' ' << #define nl << '\n' const int LIM = 3e5+1; int n, m, A, id[LIM], L[LIM], R[LIM], pre[LIM], st[LIM], stP, c; vector<int> g[LIM], h[LIM]; array<int, 3> p[LIM]; bool vis[LIM]; void dfs0(int u){ vis[u] = 1; for(int &v : g[u]) if(!vis[v]) dfs0(v); st[stP++] = u; } void dfs1(int u){ id[u] = c + 1; for(int &v : h[u]) if(!id[v]) dfs1(v); } signed main(){ cin.tie(0)->sync_with_stdio(0); cin >> n >> m >> A >> c; fill(L, L+n+1, n+1); for(int i=0; i<n; ++i){ auto &[x, y, j] = p[i]; cin >> x >> y; j = i; } for(int i=0; i<m; ++i){ int u, v, w; cin >> u >> v >> w; --u, --v; while(w--){ g[u].push_back(v); h[v].push_back(u); swap(u, v); } } for(int u=0; u<n; ++u) if(!vis[u] && !p[u][0]) dfs0(u); sort(p, p+n, [&](auto &x, auto &y){ return x[1] < y[1]; }); for(int i=0; i<n; ++i){ auto &[x, y, j] = p[i]; if(x == A) L[j+1] = R[j+1] = i+1; } for(int i=stP; --i>=0; ) if(!id[st[i]]) dfs1(c = st[i]); for(int i=0; i<stP; ++i){ int u = st[i]; L[id[u]] = min(L[id[u]], L[u+1]); R[id[u]] = max(R[id[u]], R[u+1]); for(int &v : g[u]){ L[id[u]] = min(L[id[u]], L[id[v]]); R[id[u]] = max(R[id[u]], R[id[v]]); } } for(int i=0; i<n; ++i) pre[i+1] = pre[i] + (vis[p[i][2]] && p[i][0] == A); for(int i=n; --i>=0; ){ int j = id[p[i][2]]; if(!p[i][0]) cout << (R[j] ? pre[R[j]] - pre[L[j]-1] : 0) nl; } }
#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...