Submission #1296409

#TimeUsernameProblemLanguageResultExecution timeMemory
1296409eri16Stations (IOI20_stations)C++20
0 / 100
399 ms556 KiB
#include "stations.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> lbl;

int t=-1;

vector<vector<int>> adj(1005);

void dfs(int node, int parent, int odd){
	if (odd){t++;lbl[node]=t;}
	for(int child : adj[node])
		if(child != parent) dfs(child,node,1-odd);
	if (!odd){t++;lbl[node]=t;}
}


vector<int> label(int n, int k, vector<int> u, vector<int> v){
    lbl.resize(n);
    adj.assign(n, {}); 

	for(int i=0; i<n-1; i++) {
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
	}
	t=-1;
    dfs(0,t,1);
    return lbl;
}

int find_next_station(int start, int final, vector<int> rel){
	
	int n=rel.size();
	
	if (start<rel[0]){
	    if (start!=0){
            for (int i=0; i<n-1; i++){
                if (final<=rel[i]){
                    return rel[i];
                }
            }
            return rel[n-1];
	    }
        for (int i=0; i<n; i++){
            if (final<=rel[i]){
                return rel[i];
            }
        }	    
	}
	else{
	    for (int i=n-1; i>0; i++){
	        if (final>=rel[i]){return rel[i];}
	    }
	    return rel[0];
	}
	return rel[0];
}
#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...