This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef int64_t llo;
#define mp make_pair
#define pb push_back
#define a first
#define b second
#define endl "\n"
#include "meetings.h"
/*void Bridge(int u,int v){
cout<<u<<" "<<v<<endl;
}
int Query(int u,int v,int x){
cout<<u<<" "<<v<<" "<<x<<endl;
int x2;
cin>>x2;
return x2;
}*/
void Solve(int n){
set<int> aa[n];
set<int> bb[n];
set<int> cc[n];
for(int j=1;j<n;j++){
for(int k=j+1;k<n;k++){
int x=Query(0,j,k);
if(x==j){
aa[j].insert(k);
cc[j].insert(k);
bb[k].insert(j);
}
if(x==k){
aa[k].insert(j);
cc[k].insert(j);
bb[j].insert(k);
}
}
}
for(int i=1;i<n;i++){
aa[0].insert(i);
cc[0].insert(i);
bb[i].insert(0);
}
queue<int> ac;
for(int i=0;i<n;i++){
if(aa[i].size()==0){
ac.push(i);
}
}
int par[n];
for(int i=0;i<n;i++){
par[i]=-1;
}
int vis[n];
for(int i=0;i<n;i++){
vis[i]=0;
}
while(ac.size()){
int x=ac.front();
ac.pop();
for(auto j:bb[x]){
aa[j].erase(x);
if(aa[j].size()==0){
ac.push(j);
}
}
for(auto j:cc[x]){
if(vis[j]==0){
vis[j]=1;
par[j]=x;
}
}
}
for(int i=0;i<n;i++){
if(par[i]>-1){
if(i<0){
while(true){
continue;
}
}
Bridge(par[i],i);
}
}
}
/*
int main(){
Solve(5);
return 0;
}*/
# | 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... |