Submission #1185089

#TimeUsernameProblemLanguageResultExecution timeMemory
1185089prism7kTropical Garden (IOI11_garden)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 300000;
vector<vector<pair<int, int>>> conn(MAXN);
vector<vector<int>> adjT(MAXN);
const int pr = 150000;

int T[MAXN][2];
bool vis[MAXN][2];
bool on_cycle[2];
int C_Len = 2e9+5;

void dfs(int u, int cur, int idx, int start) {
	if(u == start && vis[u][idx]) {
		C_Len = cur;
		on_cycle[idx] = true;
		return;
	}
	if(vis[u][idx]) return;
	vis[u][idx] = true;
	T[u][idx] = cur;
	for(int v : adjT[u]) {
		dfs(v, cur + 1, idx, start);
	}
}

int main() {
	memset(T, -1, sizeof T);
	int n, m, p; cin >> n >> m >> p;
	for(int i = 0, a, b; i < m; ++i) {
		cin >> a >> b;
		conn[a].push_back({i, b});
		conn[b].push_back({i, a});
	}
	
	for(int i = 0; i < n; ++i) sort(conn[i].begin(), conn[i].end());
	
	for(int i = 0; i < n; ++i) {
		int j, dest, idx;
		bool usedBest;
		
		j = conn[i][0].second;
		usedBest = false;
		if (conn[j][0].second == i) usedBest = true;
		dest = usedBest ? j + pr : j;
		adjT[dest].push_back(i);
		
		idx = (conn[i].size() > 1 ? 1 : 0);
		j = conn[i][idx].second;
		usedBest = false;
		if (conn[j][0].second == i) usedBest = true;
		dest = usedBest ? j + pr : j;
		adjT[dest].push_back(i + pr);
	}
	
	dfs(p, 0, 0, p);
	dfs(p + pr, 0, 1, p + pr);
	
	int q, g;
	cin >> q;
	while(q--) {
		cin >> g;
		int ans = 0;
		for(int i = 0; i < n; ++i) {
			bool ok = false;
			for(int j = 0; j < 2; ++j) {
				if(on_cycle[j]) {
					ok |= ((g - T[i][j]) % C_Len) == 0;
				} else {
					ok |= (g - T[i][j]) == 0;
				}
			}
			ans += ok;
		}
		cout << ans << "\n";
	}
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccsjOB7N.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccZ9E77i.o:garden.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccsjOB7N.o: in function `main':
grader.cpp:(.text.startup+0x3f): undefined reference to `count_routes(int, int, int, int (*) [2], int, int*)'
collect2: error: ld returned 1 exit status