제출 #306296

#제출 시각아이디문제언어결과실행 시간메모리
306296andreiomd슈퍼트리 잇기 (IOI20_supertrees)C++14
컴파일 에러
0 ms0 KiB
#include "supertrees.h" #include <vector> using namespace std; const int NMAX = 1e3 + 1; int N; int roads[NMAX][NMAX]; vector < int > tree[NMAX], cycle[NMAX]; bool Edge[NMAX][NMAX]; vector < vector < bool > > ans; int Id_tree[NMAX]; static inline void Add_Edge (int X, int Y) { Edge[X][Y] = Edge[Y][X] = 1; return; } static inline void DFS (int Node, int Father, int Id) { Id_tree[Id] = Id; for(auto it : tree[Node]) if(it != Father) Add_Edge(Node, it), DFS(it, Node, Id); return; } static inline void Build_trees () { for(int i = 1; i <= N; ++i) if(!tree[i].empty()) DFS(i, -1, i); return; } static inline void Solve () { Build_trees(); return; } static inline void Reconstruct () { for(int i = 1; i <= N; ++i) { vector < bool > line; for(int j = 1; j <= N; ++j) line.push_back(Edge[i][j]); ans.push_back(line); } return; } int construct (vector < vector < int > > p) { N = (int)p.size(); for(int i = 0; i < N; ++i) for(int j = 0; j < N; ++j) { roads[i + 1][j + 1] = p[i][j]; if(p[i][j] == 1) tree[i + 1].push_back(j + 1); else if(p[i][j] == 2) cycle[i + 1].push_back(j + 1); else if(p[i][j] == 3) return 0; } Solve(); construct(ans); return 1; }

컴파일 시 표준 에러 (stderr) 메시지

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:86:15: error: could not convert 'ans' from 'vector<vector<bool>>' to 'vector<vector<int>>'
   86 |     construct(ans);
      |               ^~~
      |               |
      |               vector<vector<bool>>