Submission #1229073

#TimeUsernameProblemLanguageResultExecution timeMemory
1229073Rokas159Stations (IOI20_stations)C++20
5 / 100
308 ms500 KiB
#include "stations.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	vector<vector<int>> adj(n);
	vector<int> laipsnis(n, 0);
	for (int i = 0; i < u.size(); i++) {
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
		laipsnis[u[i]]++;
		laipsnis[v[i]]++;
	}

	queue<int> q;
	for (int i = 0; i < n; i++) {
		if (laipsnis[i] == 1) {
			q.push(i);
			break;
		}
	}

	std::vector<int> labels(n);
	labels[q.front()] = 0;
	vector<bool> vis(n, false);

	while (!q.empty()) {
		int s = q.front();
		q.pop();
		vis[s] = true;
		for (int u : adj[s]) {
			if (!vis[u]) {
				vis[u] = true;
				labels[u] = labels[s] + 1;
				q.push(u);
			}
		}
	}

	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
	int mi = c[0], ma = c[0];
	for (int i = 1; i < c.size(); i++) {
		mi = min(mi, c[i]);
		ma = max(ma, c[i]);
	}

	if (t < s) {
		return mi;
	}

	return ma;
}
#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...