#include "citymapping.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void find_roads(int n, int q, int A[], int B[], int W[]) {
	if (q == 500000) {
		int cnt = 0;
		vector <ll> c(n + 1, 0);
		for (int i = 1; i <= n; i++) {
			c[i] = get_distance(1, i);
		}
		int par[n + 1] = {};
		for (int i = 2; i <= n; i++) {
			par[i] = 1;
		}
		for (int i = 2; i <= n; i++) {
			for (int j = i + 1; j <= n; j++) {
				ll x = get_distance(i, j);
				if (c[i] + x == c[j] || c[j] + x == c[i]) {
					if (c[i] < c[j]) {
						if (par[j] == 0 || c[i] > c[par[j]]) {
							par[j] = i;
						}
					} else {
						if (par[i] == 0 || c[j] > c[par[i]]) {
							par[i] = j;
						}
					}
				}
			}
		}
		for (int i = 2; i <= n; i++) {
			assert(par[i] != 0);
			int idx = cnt++;
			A[idx] = par[i]; B[idx] = i; W[idx] = c[i] - c[par[i]];
		}
		return;
	}
	vector <int> ii(n, 0);
	vector <ll> c(n + 1, 0);
	for (int i = 1; i <= n; i++) {
		c[i] = get_distance(1, i);
	}
	iota(ii.begin(), ii.end(), 1);
	stable_sort(ii.begin(), ii.end(), [&] (auto x, auto y) {
		return c[x] < c[y];
	});
	if (q == 12000) {
		vector <int> a[2] = {{1, ii[1]}, {1}};
		int cur = 0;
		for (int i = 2; i < n; i++) {
			if (c[ii[i - 1]] + get_distance(ii[i - 1], ii[i]) != c[ii[i]]) {
				cur ^= 1;
			}
			a[cur].push_back(ii[i]);
		}
		int cnt = 0;
		for (int j = 0; j + 1 < (int)a[0].size(); j++) {
			int idx = cnt; cnt++;
			A[idx] = a[0][j]; B[idx] = a[0][j + 1];
			W[idx] = c[a[0][j + 1]] - c[a[0][j]];
		}
		for (int j = 0; j + 1 < (int)a[1].size(); j++) {
			int idx = cnt; cnt++;
			A[idx] = a[1][j]; B[idx] = a[1][j + 1];
			W[idx] = c[a[1][j + 1]] - c[a[1][j]];
		}
		return;
	}
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |