Submission #1296048

#TimeUsernameProblemLanguageResultExecution timeMemory
1296048eri16Stations (IOI20_stations)C++20
0 / 100
416 ms532 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> label(int n, int k, vector<int> u, vector<int> v){
    vector<vector<int>> adj(n);
    for(int i=0;i<n-1;i++){
        adj[u[i]].push_back(v[i]);
        adj[v[i]].push_back(u[i]);
    }
    vector<int> lbl(n,0);
    for(int i=0;i<n;i++){
        string s=to_string(i);
        for(int nb:adj[i]){
            vector<char> visited(n,0);
            visited[i]=1;
            queue<int> q;
            q.push(nb);
            string part;
            while(!q.empty()){
                int x=q.front(); q.pop();
                if(visited[x]) continue;
                visited[x]=1;
                part+=char('0'+x);
                for(int y:adj[x]) if(!visited[y]) q.push(y);
            }
            part+=char('0'+nb);
            s+=part;
        }
        lbl[i]=stoi(s);
    }
    return lbl;
}

int find_next_station(int s,int t,vector<int> cp){
    int target=t;
    while(target>9) target/=10;
    string ss=to_string(s);
    vector<int> digits;
    for(char ch:ss) digits.push_back(ch-'0');
    for(size_t i=0;i<digits.size();i++){
        if(digits[i]==target){
            for(size_t j=i;j<digits.size();j++){
                for(int z=0;z<(int)cp.size();z++) if(cp[z]==digits[j]) return cp[z];
            }
        }
    }
    return cp[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...