답안 #908717

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
908717 2024-01-16T17:34:30 Z nightfal Simurgh (IOI17_simurgh) C++14
컴파일 오류
0 ms 0 KB
#include <cstdio>
#include <iostream>
#include <cassert>
#include <vector>
#include <cstdlib>
#include <string>


std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v);
int count_common_roads(const std::vector<int>& r);

bool isSubtask1(int n) {return n<=7;}
bool isSubtask2(int n) {return n<=50;}
bool isSubtask3(int n) {return n<=240;}

void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
    visit[now]=1;
    for(int elem: edgeL[now])
        if (elem!=parent && !visit[elem])
			dfs(now,elem,visit,edgeL);
	return;
}

bool isTree(std::vector<int>& r, std::vector<int>& u, std::vector<int>& v) {
    int n = r.size()+1;
    std::vector<vector<int>> edgeL(n);
    for(int i=0; i<n-1; i++) {
        int s = u[r[i]], e = v[r[i]];
        edgeL[s].push_back(e);
        edgeL[e].push_back(s);
    }
    // cout << "edge numbers: "; for(int elem: r) cout << elem << " "; cout << endl;
    vector<int> visit(n,0);
    dfs(-1,u[r[0]],visit,edgeL);
	for(int i=0; i<n; i++)
		if(!visit[i]) return false;
	// cout << "tree\n"; 
	return true;
}

bool selectEdges(int cnt, int start, std::vector<int>& r, std::vector<int>& u, std::vector<int>& v){
	int n = r.size()+1, m = u.size();
    if (cnt == n-1){
		// if (r[0]==2) for(int elem: r) printf("%d ", elem); cout << endl;
        if(isTree(r,u,v) && count_common_roads(r)== n-1) return true;
        else return false;
    }
    for(int i=start; i<m; i++){
        r[cnt] = i;
        if (selectEdges(cnt+1,i+1,r,u,v)) return true;
    }
    return false;
}

std::vector<int> subtask1(int n, std::vector<int>& u, std::vector<int>& v) {
    std::vector<int> r(n-1), zero(n-1,-1);
    if (selectEdges(0,0,r,u,v)) return r;
    else return zero;
}

std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v) {
    // if (isSubtask1(n)) 
    return subtask1(n,u,v);
}

Compilation message

simurgh.cpp:16:68: error: 'vector' was not declared in this scope; did you mean 'std::vector'?
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                    ^~~~~~
      |                                                                    std::vector
In file included from /usr/include/c++/10/vector:67,
                 from simurgh.cpp:4:
/usr/include/c++/10/bits/stl_vector.h:389:11: note: 'std::vector' declared here
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
simurgh.cpp:16:78: error: template argument 1 is invalid
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                              ^~
simurgh.cpp:16:78: error: template argument 2 is invalid
simurgh.cpp:16:68: error: 'vector' was not declared in this scope; did you mean 'std::vector'?
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                    ^~~~~~
      |                                                                    std::vector
In file included from /usr/include/c++/10/vector:67,
                 from simurgh.cpp:4:
/usr/include/c++/10/bits/stl_vector.h:389:11: note: 'std::vector' declared here
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
simurgh.cpp:16:78: error: template argument 1 is invalid
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                              ^~
simurgh.cpp:16:78: error: template argument 2 is invalid
simurgh.cpp:16:68: error: 'vector' was not declared in this scope; did you mean 'std::vector'?
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                    ^~~~~~
      |                                                                    std::vector
In file included from /usr/include/c++/10/vector:67,
                 from simurgh.cpp:4:
/usr/include/c++/10/bits/stl_vector.h:389:11: note: 'std::vector' declared here
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
simurgh.cpp:16:78: error: template argument 1 is invalid
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                              ^~
simurgh.cpp:16:78: error: template argument 2 is invalid
simurgh.cpp:16:61: error: 'std::vector' is not a type
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                             ^~~~~~
simurgh.cpp:16:67: error: expected ',' or '...' before '<' token
   16 | void dfs(int parent, int now, std::vector<int>& visit, std::vector<vector<int>>& edgeL) {
      |                                                                   ^
simurgh.cpp: In function 'void dfs(int, int, std::vector<int>&, int)':
simurgh.cpp:18:19: error: 'edgeL' was not declared in this scope
   18 |     for(int elem: edgeL[now])
      |                   ^~~~~
simurgh.cpp:18:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   18 |     for(int elem: edgeL[now])
      |     ^~~
simurgh.cpp:21:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   21 |  return;
      |  ^~~~~~
simurgh.cpp: In function 'bool isTree(std::vector<int>&, std::vector<int>&, std::vector<int>&)':
simurgh.cpp:26:17: error: 'vector' was not declared in this scope; did you mean 'std::vector'?
   26 |     std::vector<vector<int>> edgeL(n);
      |                 ^~~~~~
      |                 std::vector
In file included from /usr/include/c++/10/vector:67,
                 from simurgh.cpp:4:
/usr/include/c++/10/bits/stl_vector.h:389:11: note: 'std::vector' declared here
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
simurgh.cpp:26:27: error: template argument 1 is invalid
   26 |     std::vector<vector<int>> edgeL(n);
      |                           ^~
simurgh.cpp:26:27: error: template argument 2 is invalid
simurgh.cpp:29:14: error: invalid types 'int[int]' for array subscript
   29 |         edgeL[s].push_back(e);
      |              ^
simurgh.cpp:30:14: error: invalid types 'int[int]' for array subscript
   30 |         edgeL[e].push_back(s);
      |              ^
simurgh.cpp:33:12: error: expected primary-expression before 'int'
   33 |     vector<int> visit(n,0);
      |            ^~~
simurgh.cpp:34:20: error: 'visit' was not declared in this scope
   34 |     dfs(-1,u[r[0]],visit,edgeL);
      |                    ^~~~~