Submission #328332

#TimeUsernameProblemLanguageResultExecution timeMemory
328332M_WTorrent (COI16_torrent)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define ii pair<int, int>
vector<int> adj[300300];
bool vis[300300];
int N, A, B;
stack<int> stk;
vector<int> pth;

int findp(int a){
	vis[a] = true;
	if(a == B){
		while(!stk.empty()){
			pth.push_back(stk.top());
			stk.pop();
		}
		return -1;
	}
	for(auto x : adj[a]){
		if(!vis[x]){
			stk.push(x);
			int p = findp(x);
			if(p == -1) return -1;
			stk.pop();
		}
	}
	return 0;
}

int dfs(int a, int u, int v){
	vis[a] = true;
	set<ii> s;
	for(auto x : adj[a])
		if(!vis[x] && !((a == u && x == v) || (a == v && x == u))) s.insert(make_pair(dfs(x, u, v), x));
		
	int ret = 0, ia = s.size();
	for(auto x : s){
		ret = max(ret, x.first + ia);
		ia--;
	}
	return ret;
}

int main(){
	scanf("%d %d %d", &N, &A, &B);
	for(int i = 1, u, v; i < N; i++){
		scanf("%d %d", &u, &v);
		adj[u].push_back(v);
		adj[v].push_back(u);
	}
	findp(A);
	pth.push_back(A);
	int len = pth.size();
	
	int l = 0, r = len - 1;
	while(l < r){
		int mid = (l + r)/2;
		memset(vis, 0, sizeof vis);
		
		int x = dfs(A, pth[mid], pth[mid + 1]);
		int y = dfs(B, pth[mid], pth[mid + 1]);
		
		mindist = min(mindist, max(x, y));
		if(x >= y){
			r = mid;
		}
		else{	
			l = mid + 1;
		}
	}
	
	printf("%d", mindist);
}

Compilation message (stderr)

torrent.cpp: In function 'int main()':
torrent.cpp:63:3: error: 'mindist' was not declared in this scope
   63 |   mindist = min(mindist, max(x, y));
      |   ^~~~~~~
torrent.cpp:72:15: error: 'mindist' was not declared in this scope
   72 |  printf("%d", mindist);
      |               ^~~~~~~
torrent.cpp:45:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   45 |  scanf("%d %d %d", &N, &A, &B);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
torrent.cpp:47:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   47 |   scanf("%d %d", &u, &v);
      |   ~~~~~^~~~~~~~~~~~~~~~~