제출 #895067

#제출 시각아이디문제언어결과실행 시간메모리
895067abcvuitunggioTeleporters (IOI08_teleporters)C++17
100 / 100
328 ms59896 KiB
#include <bits/stdc++.h> using namespace std; int n,m,w[1000001],e[1000001],c[2000002],p[2000002],nxt[2000002],res,vis[2000002]; priority_queue <int> q; int main(){ ios_base::sync_with_stdio(NULL);cin.tie(nullptr); cin >> n >> m; iota(nxt,nxt+2000001,1); for (int i=1;i<=n;i++){ cin >> w[i] >> e[i]; p[w[i]]=p[e[i]]=i; nxt[w[i]-1]=e[i]; nxt[e[i]-1]=w[i]; c[w[i]-1]=c[e[i]-1]=1; } vis[2000001]=1; for (int i=0;i<=2000000;i++){ if (!vis[i]){ int s=0,x=i; while (!vis[x]){ s+=c[x]; vis[x]=1; x=nxt[x]; } if (x!=i) res=s; else q.push(s); } } while (!q.empty()&&m){ res+=q.top()+2; q.pop(); m--; } cout << res+m+m/2*2; }
#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...
#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...