Submission #784257

#TimeUsernameProblemLanguageResultExecution timeMemory
784257boyliguanhan장난감 기차 (IOI17_train)C++17
0 / 100
8 ms4084 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; vector<int> adj[50100], adj2[50100]; int lowl[50100], id[50100], onstk[50100], cnt, sz[50100], ok[50100], charged[50100], vis[50100]; stack<int> stk; void tarjan(int n) { if(id[n]) return; lowl[n] = id[n] = ++cnt; onstk[n] = 1; stk.push(n); for(auto i: adj[n]) { tarjan(i); if(onstk[i]) { lowl[n] = min(lowl[i], lowl[n]); } } sz[lowl[n]]++; if(lowl[n] == id[n]) { while(stk.top()!=n) { onstk[stk.top()]=0; stk.pop(); } onstk[n] = 0; stk.pop(); } } vector<int> order; void dfs(int n) { if(vis[n]) return; vis[n] = 1; for(auto i: adj2[n]) dfs(i); order.push_back(n); } std::vector<int> who_wins(std::vector<int> A, std::vector<int> R, std::vector<int> u, std::vector<int> v) { for(int i = 0; i < u.size(); i++) { adj[u[i]].push_back(v[i]); if(u[i]==v[i]) ok[u[i]] = 1; } for(int i = 0; i < A.size(); i++) { tarjan(i); } for(int i = 0; i < cnt; i++) { if(R[i]&&(sz[lowl[i]]!=1||ok[i])) { charged[lowl[i]]=1; } } for(int i = 0; i < u.size(); i++) if(lowl[u[i]]!=lowl[v[i]]) adj2[lowl[u[i]]].push_back(lowl[v[i]]); for(int i = 0; i < cnt; i++) { dfs(lowl[i]); } for(auto i: order) { for(auto j: adj2[i]) if(charged[j]) charged[i] = 1; } vector<int> res; for(int i = 0; i < cnt; i++) { res.push_back(charged[lowl[i]]); } return res; }

Compilation message (stderr)

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:37:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |     for(int i = 0; i < u.size(); i++) {
      |                    ~~^~~~~~~~~~
train.cpp:41:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |     for(int i = 0; i < A.size(); i++) {
      |                    ~~^~~~~~~~~~
train.cpp:49:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     for(int i = 0; i < u.size(); i++)
      |                    ~~^~~~~~~~~~
#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...