Submission #433112

#TimeUsernameProblemLanguageResultExecution timeMemory
433112Ruba_KStations (IOI20_stations)C++14
0 / 100
904 ms536 KiB
#include "stations.h" #include <vector> #include<bits/stdc++.h> using namespace std ; const int N = 1e3 + 3 ; vector<int> adj[N]; map<int , int > fd ; int now ; void dfs(int u , int p , int d){ if(d > 3)return ; fd[u] = now ; for(auto f : adj[u]){ if(f != p) dfs(f , u , d + 1); } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n); for(int i = 0 ;i < n; i ++)adj[i].clear(); // clear for(int i = 0 ; i < n - 1 ; i ++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } for(int i = 0 ; i < n ; i ++){ if(adj[i].size() == 1) now = i , dfs(i , -1 , 0); } for(int i = 0 ; i < n ; i ++){ string s = "" ; for(auto f : adj[i])s.push_back(f + 48); s.push_back(fd[i] + '0'); s.push_back(i + 48); while(s.size() < 9)s.insert(0 , "9"); if(s[0] == '0')swap(s[0] , s[1]); labels[i] = stoi(s); } return labels; } int find_next_station(int s, int t,vector<int> c) { if(c.size() == 1)return c[0]; for(auto f : c){ map<int , int > mp ; int tmp ; tmp = t ; int idx = -1 ; while(tmp){ idx ++ ; if(idx != 7)mp[tmp % 10] ++ ; tmp /= 10; } mp.erase(9); tmp = f ; idx = -1 ; while(tmp){ idx ++ ; if(idx != 7 && mp.count(tmp % 10) && tmp % 10 != s % 10){ return f ; } tmp /= 10 ; } } string str = to_string(c[0]); int a = str[1] - '0'; if(a == t % 10)return c[0]; else return c[1]; }
#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...