Submission #1296088

#TimeUsernameProblemLanguageResultExecution timeMemory
1296088eri16Stations (IOI20_stations)C++20
0 / 100
6 ms476 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+1); // +1 shift
    for(int i=0;i<n-1;i++){
        adj[u[i]+1].push_back(v[i]+1);
        adj[v[i]+1].push_back(u[i]+1);
    }

    vector<int> lbl(n+1);

    for(int i=1;i<=n;i++){
        int ans=i; // start with shifted node
        for(int j=0;j<adj[i].size();j++){
            int visited[n+1]={0};
            visited[i]=1;
            visited[adj[i][j]]=1;

            queue<int> q;
            int tttt = adj[i][j];
            for(int ij=0;ij<adj[tttt].size();ij++) q.push(adj[tttt][ij]);

            while(!q.empty()){
                int x = q.front(); q.pop();
                if(!visited[x]){
                    visited[x]=1;
                    ans = ans*10 + x; // multiply shifted nodes
                    for(int ij=0;ij<adj[x].size();ij++) q.push(adj[x][ij]);
                }
            }
            ans = ans*10 + adj[i][j]; // add neighbor at end
        }
        lbl[i-1] = ans; // store in 0-based lbl array
    }

    return lbl;
}


int find_next_station(int s, int t, vector <int> cp){
    int target=t%10;
    
    vector <int> c;
    
    while (s>0){
        c.push_back(s%10);
        s=s/10;
    }
  
    for (int i=0; i<c.size(); i++){
        if (c[i]==t){
            for (int j=i; j<c.size(); j++){
                for (int z=0; z<cp.size(); z++){
                    if (cp[z]==c[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...