제출 #1229220

#제출 시각아이디문제언어결과실행 시간메모리
1229220Adomas08Stations (IOI20_stations)C++20
0 / 100
3055 ms2162688 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; int cur = 0; int parent[1000], secparent[1000]; vector<int> children[1000]; vector<int> secchildren[1000]; vector <int> adj[1000]; void dfs(int s, vector<int> &labels, vector <bool> visited){ labels[s] = cur; cur++; vector <int> v; for (auto u : children[s]){ for (auto v : children[u]){ dfs(v, labels, visited); } labels[u] = cur; cur++; } } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { std::vector<int> labels(n); vector <bool> visited(n, 0); for (int i = 0; i < u.size(); i++){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } queue <int> q; q.push(0); bool visit[n]; for (int i = 0; i < n; i++) visit[i] = 0; parent[0] = 0; while (!q.empty()){ int s = q.front(); q.pop(); visit[s] = 1; for (auto u : adj[s]){ if (!visit[u]){ q.push(u); parent[u] = s; children[s].push_back(u); } } } for (int i = 1; i < n; i++){ if (children[i].size() != 0){ for (auto u : children[i]){ secparent[u] = parent[i]; secchildren[parent[i]].push_back(u); } } } dfs(0, labels, visited); return labels; } int find_next_station(int s, int t, std::vector<int> c) { if (s < c[0]){ if (t < s) return c[c.size() - 1]; for (auto u : c){ if (t <= u){ return u; } } return c[c.size() - 1]; } else{ if (t > s) return c[0]; if (t < c[0]) return c[0]; for (int i = 1; i < c.size(); i++){ if (c[i] > t){ return c[i-1]; } } return c[c.size() - 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...