Submission #1264233

#TimeUsernameProblemLanguageResultExecution timeMemory
1264233MongHwa철도 요금 (JOI16_ho_t3)C++20
26 / 100
49 ms13896 KiB
#pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #include <iostream> #include <vector> #include <queue> using namespace std; int dist[100005]; int u[200005], v[200005], val[100005]; vector<int> stage[100005], vec[100005]; queue<int> qu; void bfs() { dist[1] = 1; qu.push(1); while(!qu.empty()) { int cur = qu.front(); qu.pop(); for(int nxt : stage[cur]) if(dist[nxt] == 0 || dist[nxt] == dist[cur]+1) { if(dist[nxt] == 0) qu.push(nxt); dist[nxt] = dist[cur]+1; vec[cur].push_back(nxt); val[nxt]++; } } } int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, q; cin >> n >> m >> q; for(int i = 0; i < m; i++) { cin >> u[i] >> v[i]; stage[u[i]].push_back(v[i]); stage[v[i]].push_back(u[i]); } bfs(); int ans = 0; while(q--) { int r; cin >> r; r--; if(dist[u[r]] != dist[v[r]]) { if(dist[u[r]] > dist[v[r]]) swap(u[r], v[r]); val[v[r]]--; if(val[v[r]] == 0) { qu.push(v[r]); while(!qu.empty()) { ans++; int cur = qu.front(); qu.pop(); for(int nxt : vec[cur]) { val[nxt]--; if(val[nxt] == 0) qu.push(nxt); } } } } cout << ans << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...