Submission #292309

#TimeUsernameProblemLanguageResultExecution timeMemory
292309kimbj0709Highway Tolls (IOI18_highway)C++14
5 / 100
15 ms888 KiB
#include "highway.h"
#include<bits/stdc++.h>
using namespace std;
#define maxn 1050
#define f first
#define s second
int a,b;
int dist = 0;
//long long ask(const std::vector<int> &w);
//void answer(int s, int t);
vector<vector<pair<int,int> > > adj(maxn);
vector<int> visited;
int cnt = 0;
void dfs(int node,int parent,int dis){
  if(dis==dist){
    if(ask(visited)==cnt*b){
      assert(dist==cnt);
     // cout << node << "--\n";
      answer(0,node);
      exit(0);
    }
  }
  for(auto k:adj[node]){
    if(k.f!=parent){
      visited[k.s] = 1;
      cnt++;
      dfs(k.f,node,dis+1);
      visited[k.s] = 0;
      cnt--;
    }
  }
}
void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) {
  int M = U.size();
  for(int i=0;i<M;i++){
    adj[U[i]].push_back({V[i],i});
    adj[V[i]].push_back({U[i],i});
  }
  for(int i=0;i<M;i++){
    visited.push_back(0);
  }
  a = A;
  b = B;
  assert(ask(visited)%a==0);
  dist = ask(visited)/a;
  dfs(0,-1,0);
  assert(0==1);
 
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...