# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1231019 | salmon | Povjerenstvo (COI22_povjerenstvo) | C++20 | 419 ms | 97616 KiB |
#include <bits/stdc++.h>
using namespace std;
int N;
int M;
int u,v;
int parent[500100];
vector<int> adjlst[500100];
vector<int> badjlst[500100];
int d[500100];
bool used[500100];
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
bool visited[500100];
vector<int> order;
int it = 0;
void dfs(int i){
visited[i] = true;
for(int j : adjlst[i]) if(!visited[j]) dfs(j);
order.push_back(i);
}
int main(){
scanf(" %d",&N);
scanf(" %d",&M);
for(int i = 0; i < M; i++){
scanf(" %d",&u);
scanf(" %d",&v);
adjlst[u].push_back(v);
badjlst[v].push_back(u);
d[u]++;
}
for(int i = 1; i <= N; i++){
parent[i] = 1;
used[i] = false;
pq.push({d[i],i});
}
for(int i = 1; i <= N; i++) if(!visited[i]) dfs(i);
vector<int> bosen;
int cont = 0;
while(cont != N){
if(used[pq.top().second]){
pq.pop();
continue;
}
cont++;
if(pq.top().first == 0){
int i = pq.top().second;
pq.pop();
used[i] = true;
bosen.push_back(i);
for(int j : badjlst[i]){
if(!used[j]){
used[j] = true;
cont++;
for(int k : badjlst[j]){
d[k]--;
pq.push({d[k],k});
}
}
}
for(int j : adjlst[i]){
if(!used[j]){
used[j] = true;
cont++;
for(int k : badjlst[j]){
d[k]--;
pq.push({d[k],k});
}
}
}
}
else{
while(used[order[it]]){
it++;
}
int i = order[it];
used[i] = true;
bosen.push_back(i);
for(int j : badjlst[i]){
if(!used[j]){
used[j] = true;
cont++;
for(int k : badjlst[j]){
d[k]--;
pq.push({d[k],k});
}
}
}
for(int j : adjlst[i]){
if(!used[j]){
used[j] = true;
cont++;
for(int k : badjlst[j]){
d[k]--;
pq.push({d[k],k});
}
}
}
it++;
}
}
printf("%d\n",bosen.size());
for(int i : bosen) printf("%d ",i);
printf("\n");
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |