Submission #170346

#TimeUsernameProblemLanguageResultExecution timeMemory
170346ngmh도서관 (JOI18_library)C++11
19 / 100
3093 ms532 KiB
#include <bits/stdc++.h>
#include "library.h"
using namespace std;

void Solve(int N)
{
    if(N == 1){
        vector<int> edge;
        edge.push_back(1);
        Answer(edge);
        return;
    }
	vector<int> v(N);
	vector<int> adjlist[N+1];
	long long A, S, T;
	for(int i = 1; i <= N; i++){
		for(int j = 1; j <= N; j++){
			if(i == j || adjlist[j].size() == 2) continue;
            if(find(adjlist[i].begin(), adjlist[i].end(), j) != adjlist[i].end()) continue;
			v[i-1] = v[j-1] = 1;
			A = Query(v);
			v[i-1] = v[j-1] = 0;
			if(A == 1){
				adjlist[i].push_back(j);
				adjlist[j].push_back(i);
				if(adjlist[i].size() == 2) break;
			}
		}
		if(adjlist[i].size() == 1) S = i;
	}
	vector<int> res;
	res.push_back(S);
	T = adjlist[S][0];
	while(true){
		res.push_back(T);
		if(res.size() == N) break;
		for(int i = 0; i < adjlist[T].size(); i++){
			if(adjlist[T][i] != S){
				S = T;
				T = adjlist[T][i];
				break;
			}
		}
	}
	Answer(res);
}

Compilation message (stderr)

library.cpp: In function 'void Solve(int)':
library.cpp:36:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(res.size() == N) break;
      ~~~~~~~~~~~^~~~
library.cpp:37:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < adjlist[T].size(); i++){
                  ~~^~~~~~~~~~~~~~~~~~~
library.cpp:32:15: warning: 'S' may be used uninitialized in this function [-Wmaybe-uninitialized]
  res.push_back(S);
  ~~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...