pat1122 Hamiltonian Cycle

1605 단어 pat
제목: 그림을 입력하고 q개의 질문을 입력하며, 질문마다 경로를 제시하고, 이 경로가 하미턴 회로인지 묻는다.
사고방식: 가장자리를 기록하고 주어진 경로를 한 번 가면 된다.
코드
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
typedef pair P;

int V, E, x, y;
int Q, N, s, e;
set

st; int main() { // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); scanf("%d %d", &V, &E); for (int i = 0; i < E; i++) { scanf("%d %d", &x, &y); st.insert(make_pair(x, y)); st.insert(make_pair(y, x)); } scanf("%d", &Q); while (Q--) { scanf("%d", &N); set sp; for (int i = 1; i <= V; i++) { sp.insert(i); } bool flag = true; s = e = -1; int past = -1; for (int i = 0; i < N; i++) { scanf("%d", &x); if (i == 0) {s = x; past = x;} else { if (!st.count(make_pair(past, x))) { flag = false; } past = x; } if (i == N-1) e = x; if (sp.count(x)) sp.erase(x); else if (i != N-1) flag = false; } if (s != e) flag = false; if (sp.size() != 0) flag = false; if (flag) printf("YES
"); else printf("NO
"); } return 0; }


좋은 웹페이지 즐겨찾기