제출 #1140008

#제출 시각아이디문제언어결과실행 시간메모리
1140008brover29Amusement Park (JOI17_amusement_park)C++20
0 / 100
15 ms2116 KiB
#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];
vector<ll>g[N];
void dfs(ll v,ll x,ll i=0){
  used[v]=1;
  MessageBoard(v,((x>>i)&1));
  msg[v]=1;
  for(ll to:g[v]){
    if(used[to])continue;
    dfs(to,x,i+1);
    break;
  }
}
void Joi(int n, int m, int U[], int V[], long long x, int T) {
  for(ll i=1;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=20005;

ll ans,msg[N];
ll pr[N],used[N];
vector<ll> g[N];
void dfs(ll v){
  used[v]=1;
  for(ll to:g[v]){
    if(used[to])continue;
    pr[to]=v;
    dfs(to);
  }
}void calc(ll v,ll i=0){
  used[v]=1;
  ans+=(1ll<<i)*msg[v];
  for(ll to:g[v]){
    if(used[to])continue;
    msg[to]=Move(to);
    calc(to,i+1);
    break;
  }
}
long long Ioi(int n, int m, int U[], int VV[], int P, int V, int T) {
  for(ll i=1;i<=m;i++){
    ll v=VV[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(P);
  msg[P]=V;
  vector<ll>v;
  ll s=0;
  while(s!=P){
    assert(1!=1);
    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 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...