답안 #800792

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
800792 2023-08-01T20:52:32 Z biank 통행료 (IOI18_highway) C++11
0 / 100
17 ms 2384 KB
#include "highway.h"
#include <bits/stdc++.h>

using namespace std;

#define SIZE(x) (int)x.size()
#define ll long long

vector <vector <int>> adj;
map <pair <int, int>, int> m;
vector <int> h;
int s = -1, t = -1;

void DFS(ll dist, int u = 0, int p = -1) {
	int c = 0;
	for (int v:adj[u]) {
		if (c >= 2) {
			return;
		}
		if (v == p) {
			c++;
			continue;
		}
		h[m[{u,v}]] = 1;
		bool b = ask(h) > dist;
		h[m[{u,v}]] = 0;
		c += b;
		if (b) {
			DFS(dist, v, u);
		}
		if (c >= 2) {
			return;
		}
	}
	if (s == -1) {
		s = u;
	} else if (t == -1) {
		t = u;
	} else {
		cerr << "error: " << u << endl;
	}
}

void find_pair(int N, vector<int> U, vector<int> V, int A, int B) {
	if (A > B) {
		return;
	}
  adj.resize(N);
  int M = SIZE(U);
  h.assign(M, 0);
  for (int i=0; i<M; i++) {
	  adj[V[i]].push_back(U[i]);
	  adj[U[i]].push_back(V[i]);
	  m[{V[i], U[i]}] = i;
	  m[{U[i], V[i]}] = i;
  }
  DFS(ask(h));
  answer(s, t);
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 464 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 10 ms 2288 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 464 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 2384 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 17 ms 2336 KB Output is incorrect: {s, t} is wrong.
2 Halted 0 ms 0 KB -