Submission #775986

#TimeUsernameProblemLanguageResultExecution timeMemory
775986petezaToy Train (IOI17_train)C++14
0 / 100
1034 ms197380 KiB
#include <bits/stdc++.h> #include "train.h" using namespace std; using pii = pair<int, int>; vector<int> adj[5005], tran[5005]; int dist[5005][5005], disttran[5005][5005]; bool vis[5005], self[5005]; int st; queue<pii> q; std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { std::vector<int> res(a.size()); for(int i=0;i<u.size();i++) adj[u[i]].push_back(v[i]), tran[v[i]].push_back(u[i]), self[u[i]] |= (u[i] == v[i]); if(a[0] == 1) { // arezou (sub 3), find cyc with charging station for(st=0;st<a.size();st++) { for(int i=0;i<=a.size();i++) { //normal vis[i] = 0; dist[st][i] = disttran[st][i] = 1000000000; } q.emplace(st, 0); while(!q.empty()) { auto e = q.front(); q.pop(); if(vis[e.first]) continue; vis[e.first] = 1; dist[st][e.first] = e.second; for(int E:adj[e.first]) q.emplace(E, e.second+1); } for(int i=0;i<=a.size();i++) { //transposed vis[i] = 0; } q.emplace(st, 0); while(!q.empty()) { auto e = q.front(); q.pop(); if(vis[e.first]) continue; vis[e.first] = 1; disttran[st][e.first] = e.second; for(int E:tran[e.first]) q.emplace(E, e.second+1); } } for(int i=0;i<a.size();i++) { bool yas = self[i] && r[i]; for(int k=0;k<a.size();k++) { if(i != k && (dist[i][k] + disttran[k][i] < a.size()) && r[k]) { yas = 1; break; } } res[i] = yas; } } else { // borzou (sub 4), find cyc with NO charging station } 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:15:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |  for(int i=0;i<u.size();i++)
      |              ~^~~~~~~~~
train.cpp:20:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   for(st=0;st<a.size();st++) {
      |            ~~^~~~~~~~~
train.cpp:21:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |    for(int i=0;i<=a.size();i++) { //normal
      |                ~^~~~~~~~~~
train.cpp:33:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |    for(int i=0;i<=a.size();i++) { //transposed
      |                ~^~~~~~~~~~
train.cpp:47:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |   for(int i=0;i<a.size();i++) {
      |               ~^~~~~~~~~
train.cpp:49:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |    for(int k=0;k<a.size();k++) {
      |                ~^~~~~~~~~
train.cpp:50:47: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     if(i != k && (dist[i][k] + disttran[k][i] < a.size()) && r[k]) {
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
#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...