Submission #1174824

#TimeUsernameProblemLanguageResultExecution timeMemory
1174824khanhphucscratchStations (IOI20_stations)C++20
0 / 100
302 ms564 KiB
#include "stations.h" #include<bits/stdc++.h> using namespace std; //Subtask 1 vector<int> ad[1005]; int deg[1005], ans[1005]; bool visited[1005]; void dfs(int u) { visited[u] = 1; for(int i = 0; i < ad[u].size(); i++) if(visited[ad[u][i]] == 0){ ans[ad[u][i]] = ans[u] + i*1000 + 1; dfs(ad[u][i]); } } vector<int> label(int n, int k, vector<int> a, vector<int> b) { for(int i = 0; i < n; i++){ deg[i] = 0; ad[i].clear(); visited[i] = 0; } for(int i = 0; i < n-1; i++){ deg[a[i]]++; deg[b[i]]++; ad[a[i]].push_back(b[i]); ad[b[i]].push_back(a[i]); } int root = 0; while(root < n && deg[root] <= 2){ root++; } if(root == n) root = 0; ans[root] = 0; dfs(root); vector<int> an(n); for(int i = 0; i < n; i++) an[i] = ans[i]; return an; } int find_next_station(int s, int t, vector<int> c) { if(s == 0) return t/1000*1000+1; if(t == 0){ if(s%1000 == 1) return 0; else return s-1; } if((s-1)/1000 != (t-1)/1000){ if(s%1000 == 1) return 0; else return s-1; } if(s < t) return s+1; else return s-1; } /*int main() { int type; cin>>type; if(type == 1){ vector<int> a, b; int n; cin>>n; for(int i = 0; i < n-1; i++){ int u, v; cin>>u>>v; a.push_back(u); b.push_back(v); } vector<int> ans = label(n, 0, a, b); for(int i : ans) cout<<i<<" "; } else{ int s, t, n; cin>>s>>t>>n; vector<int> adj(n); for(int i = 0; i < n; i++) cin>>adj[i]; cout<<find_next_station(s, t, adj); } }*/
#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...