#include <bits/stdc++.h>
#include <vector>
#include "Joi.h"
using namespace std;
using ll = long long;
const ll N=20005;
ll used[N],msg[N],i;
vector<ll>g[N];
void dfs(ll v,ll x){
used[v]=1;
MessageBoard(v,((x>>i)&1));
msg[v]=1;
for(ll to:g[v]){
if(used[to])continue;
dfs(to,x);
i++;
if(i>=60)break;
}
}
void Joi(int n, int m, int U[], int V[], long long x, int T) {
for(ll i=0;i<m;i++){
ll v=V[i],u=U[i];
g[v].push_back(u);
g[u].push_back(v);
}for(ll i=0;i<n;i++)sort(g[i].begin(),g[i].end());
dfs(0,x);
for(ll i=0;i<n;i++){
if(!msg[i])MessageBoard(i,1);
}
}
#include <bits/stdc++.h>
#include "Ioi.h"
using namespace std;
using ll = long long;
const ll N=10005;
ll ans,msg[N];
ll pr[N],used[N];
vector<ll> g[N];
set<pair<ll,ll>>edges;
void dfs(ll v){
used[v]=1;
for(ll to:g[v]){
if(used[to])continue;
pr[to]=v;
dfs(to);
}
}ll i=0;
void calc(ll v,ll pr=-1){
used[v]=1;
ans+=(1ll<<i)*msg[v];
for(ll to:g[v]){
if(used[to])continue;
msg[to]=Move(to);
i++;
calc(to);
if(i>=60)break;
}
if(pr!=-1)Move(pr);
}
long long Ioi(int n, int m, int U[], int VV[], int P, int V, int T) {
for(ll i=0;i<m;i++){
ll v=VV[i],u=U[i];
g[v].push_back(u);
g[u].push_back(v);
edges.insert({ U[i], VV[i] });
edges.insert({ VV[i], U[i] });
}for(ll i=0;i<n;i++)sort(g[i].begin(),g[i].end());
msg[P]=V;
dfs(P);
vector<ll>v;
ll s=0;
while(s!=P){
v.push_back(s);
s=pr[s];
}
reverse(v.begin(),v.end());
s=P;
for(ll i:v){
msg[i]=Move(i);
s=i;
}for(ll i=0;i<n;i++)used[i]=0;
calc(0);
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |