Submission #95135

# Submission time Handle Problem Language Result Execution time Memory
95135 2019-01-27T14:43:29 Z Retro3014 Teleporters (IOI08_teleporters) C++17
Compilation error
0 ms 0 KB
#include <iostream>
#include <algorithm>
#include <vector>
#include <stdio.h>

#define MAX_X 2000010
using namespace std;
typedef long long ll;
int N, M;
struct S{
	S(int x, int y) : x(x), y(y) {}
	int x, y;
};
vector<S> v;
int g[MAX_X+1];
vector<int> v2;
int r[MAX_X+1];
bool vst[MAX_X+1];

vector<int> cycle;
int ans;

void dfs(int x, ll y){
	if(vst[x]){
		cycle.push_back(y);
		return;
	}
	vst[x] = true;
	if(x==v2.size()-1){
		ans+=y;
		return;
	}
	dfs(r[x], y+1);
}

int main(){
	scanf("%d%d", &N, &M);
	for(int i=0; i<N; i++){
		int a, b; scanf("%d%d", &a, &b);
		v.push_back({a, b});
		v2.push_back(a); v2.push_back(b);
	}
	v2.push_back(0); sort(v2.begin(), v2.end());
	for(int i=0; i<v2.size(); i++){
		g[v2[i]] = i;
	}
	S now;
	for(int i=0; i<v.size(); i++){
		now = v[i];
		r[g[now.x]-1] = g[now.y];
		r[g[now.y]-1] = g[now.x];
	}
	for(int i=0; i<v2.size(); i++){
		if(vst[i])	continue;
		dfs(i, 0);
	}
	v2.clear();
	/*printf("%d\n", ans);
	for(int i=0; i<cycle.size(); i++){
		printf("%d\n", cycle[i]);
	}*/
	sort(cycle.begin(), cycle.end());
	while(M--){
		if(cycle.empty()){
			cycle.push_back(1);
			ans++;
		}else{
			ans+=2+cycle.back();
			cycle.pop_back();
		}
	}
	printf("%d", ans);
	return 0;
}

Compilation message

teleporters.cpp: In function 'void dfs(int, ll)':
teleporters.cpp:29:6: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(x==v2.size()-1){
     ~^~~~~~~~~~~~~
teleporters.cpp: In function 'int main()':
teleporters.cpp:44:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<v2.size(); i++){
               ~^~~~~~~~~~
teleporters.cpp:47:4: error: no matching function for call to 'S::S()'
  S now;
    ^~~
teleporters.cpp:11:2: note: candidate: S::S(int, int)
  S(int x, int y) : x(x), y(y) {}
  ^
teleporters.cpp:11:2: note:   candidate expects 2 arguments, 0 provided
teleporters.cpp:10:8: note: candidate: constexpr S::S(const S&)
 struct S{
        ^
teleporters.cpp:10:8: note:   candidate expects 1 argument, 0 provided
teleporters.cpp:10:8: note: candidate: constexpr S::S(S&&)
teleporters.cpp:10:8: note:   candidate expects 1 argument, 0 provided
teleporters.cpp:48:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<v.size(); i++){
               ~^~~~~~~~~
teleporters.cpp:53:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<v2.size(); i++){
               ~^~~~~~~~~~
teleporters.cpp:37:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &N, &M);
  ~~~~~^~~~~~~~~~~~~~~~
teleporters.cpp:39:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a, b; scanf("%d%d", &a, &b);
             ~~~~~^~~~~~~~~~~~~~~~