답안 #775973

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
775973 2023-07-07T07:58:48 Z peteza 장난감 기차 (IOI17_train) C++14
0 / 100
300 ms 197548 KB
#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];

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]);
	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[st]) 
					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[st]) 
					q.emplace(E, e.second+1);
			}

			
		}
		for(int i=0;i<a.size();i++) {
			if(r[i]) {
				bool yas = 0;
				for(int k=0;k<a.size();k++) {
					if(i != k && (dist[i][k] + disttran[k][i] <= a.size())) {
						yas = 1;
						break;
					}
				}
				res[i] = yas;
			} else {
				bool yas = 0;
				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

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:19:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |   for(st=0;st<a.size();st++) {
      |            ~~^~~~~~~~~
train.cpp:20:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |    for(int i=0;i<=a.size();i++) { //normal
      |                ~^~~~~~~~~~
train.cpp:32:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |    for(int i=0;i<=a.size();i++) { //transposed
      |                ~^~~~~~~~~~
train.cpp:46:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |   for(int i=0;i<a.size();i++) {
      |               ~^~~~~~~~~
train.cpp:49:18: 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:48: 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())) {
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
train.cpp:58:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |     for(int k=0;k<a.size();k++) {
      |                 ~^~~~~~~~~
train.cpp:59:48: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |      if(i != k && (dist[i][k] + disttran[k][i] <= a.size()) && r[k]) {
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 980 KB 3rd lines differ - on the 14th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 596 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 300 ms 197548 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 1108 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 1364 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 980 KB 3rd lines differ - on the 14th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -