# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1171453 | danglayloi1 | Meetings (JOI19_meetings) | C++20 | 0 ms | 0 KiB |
#include "meetings.h"
#include <bits/stdc++.h>
#define ii pair<int, int>
#define fi first
#define se second
#define inf 0x3f3f3f3f3f3f3f3f
using namespace std;
using ll = long long;
const ll mod=1e9+7;
const int nx=2e3+5;
// void Bridge(int u, int v)
// {
// cout<<"haha"<<u<<' '<<v<<'\n';
// }
// int query(int u, int v, int w)
// {
// cout<<u<<' '<<v<<' '<<w<<'\n';
// int x;
// cin>>x;
// return x;
// }
void dfs(int p, vector<int> ver)
{
if(ver.size()==2)
{
Bridge(ver[0], ver[1]);
return;
}
int u=(ver[0]==p)?ver[1]:ver[0];
int mx=0;
for(int i:ver) mx=max(mx, i);
for(int i = 0; i < ver.size(); i++)
if(ver[i]==u)
ver.erase(ver.begin()+i);
bool vis[nx];
for(int i = 0; i <= mx; i++)
vis[i]=0;
vector<int> tmp;
while(true)
{
int v=-1;
for(int i:ver)
{
if(!vis[i])
{
v=i;
vis[v]=1;
break;
}
}
if(v==-1) break;
tmp.clear();
tmp.emplace_back(v);
for(int i:ver)
{
if(vis[i]) continue;
if(Query(v, i, u)!=u)
tmp.emplace_back(i), vis[i]=1;
}
tmp.emplace_back(u);
dfs(u, tmp);
}
}
void solve(int n)
{
vector<int> res;
res.clear();
for(int i = 0; i < n; i++)
res.emplace_back(i);
dfs(-1, res);
}
// int main()
// {
// solve(5);
// }