Submission #307640

# Submission time Handle Problem Language Result Execution time Memory
307640 2020-09-28T22:08:39 Z giorgikob Stations (IOI20_stations) C++14
Compilation error
0 ms 0 KB
#include "stations.h"
#include <vector>
#include<bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define pb push_back
using namespace std;

const int N = 1e3+5;

vector<int>gr[N];

int cnt = 0;
int fix[N];
int mn[N];
int in[N], out[N];

void dfs(int x, int h, vector<int>&v){
    fix[x] = 1;
    in[x] = cnt;cnt++;
    for(auto to : gr[x]){
        if(fix[to]) continue;
        dfs(to,h+1,v);
    }
    out[x] = cnt;cnt++;
    if(h%2){
        v[x] = out[x];
    } else {
        v[x] = in[x];
    }
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {

	std::vector<int> labels(n,0);
	for(int i = 0; i < u.size(); i++){
        int x = u[i];
        int y = v[i];
        gr[x].pb(y);
        gr[y].pb(x);
	}

	cnt = 0;
    dfs(0,0,labels);

	for(int i = 0; i < n; i++) gr[i].clear(), fix[i] = 0;

	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
    /*cout << "test case" << endl;
    cout << s << " " << t << endl;
    for(auto x : c) cout << x << " "; cout << endl;
    cout << "end of test case" << endl;
    */
    if(c.size() == 1) return c[0];

    if(c[0] < s){
        for(int i = 1; i < c.size(); i++){
            int in = c[i];
            int out = (c[i] == c.back()) ? (s-1) : (c[i+1] - 1);
            if(in <= t && t <= out) return c[i];
        }
        return c[0];
    } else {
        if(in > t || t < out) return c.back();
        for(int i = 0; i < c.size() - 1; i++){
            int in = (i == 0) ? (s + 1) : (c[i-1] + 1);
            int out = c[i];
            if(in <= t && t <= out) return c[i];
        }
        return c.back();
    }
}

Compilation message

stations.cpp: In function 'std::vector<int> label(int, int, std::vector<int>, std::vector<int>)':
stations.cpp:37:19: 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++){
      |                 ~~^~~~~~~~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:61:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |         for(int i = 1; i < c.size(); i++){
      |                        ~~^~~~~~~~~~
stations.cpp:68:17: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   68 |         if(in > t || t < out) return c.back();
      |                 ^
stations.cpp:68:26: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   68 |         if(in > t || t < out) return c.back();
      |                          ^~~
stations.cpp:69:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |         for(int i = 0; i < c.size() - 1; i++){
      |                        ~~^~~~~~~~~~~~~~