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...