제출 #969297

#제출 시각아이디문제언어결과실행 시간메모리
969297mariaclara장난감 기차 (IOI17_train)C++17
0 / 100
8 ms1372 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pii; const int INF = 1e9+10; const ll LINF = 1e18+10; #define all(x) x.begin(), x.end() #define sz(x) x.size() #define mk make_pair #define pb push_back #define f first #define s second int t; bool vis[5005], in_dfs[5005]; vector<int> edges[5005]; bool dfs(int x) { in_dfs[x] = 1; vis[x] = 1; for(auto viz : edges[x]) { if(vis[viz] and in_dfs[viz]) return 1; else if(vis[viz]) continue; if(dfs(viz)) return 1; } in_dfs[x] = 0; return 0; } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { int n = sz(a), m = sz(u); vector<int> res(n); for(int i = 0; i < m; i++) edges[v[i]].pb(u[i]); queue<int> fila; for(int i = 0; i < n; i++) { if(r[i]) { memset(vis, 0, sizeof(vis)); memset(in_dfs, 0, sizeof(in_dfs)); if(dfs(i)) fila.push(i); } } while(!fila.empty()) { int x = fila.front(); fila.pop(); if(res[x]) continue; res[x] = 1; for(auto viz : edges[x]) fila.push(viz); } return res; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...