답안 #208732

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
208732 2020-03-12T05:41:59 Z E869120 어르신 집배원 (BOI14_postmen) C++14
55 / 100
500 ms 41952 KB
#include <iostream>
#include <vector>
#include <set>
using namespace std;
#pragma warning (disable: 4996)

struct Node {
	int to, cap, rev;
};

int N, M, A[1 << 19], B[1 << 19];
vector<Node> X[1 << 19]; int cur[1 << 19];
bool used[1 << 19];

int vec[1 << 19], sz;
int v1[1 << 19], sz1;

int main() {
	scanf("%d%d", &N, &M);
	for (int i = 1; i <= M; i++) {
		scanf("%d%d", &A[i], &B[i]);
		X[A[i]].push_back(Node{ B[i], 1, (int)X[B[i]].size() });
		X[B[i]].push_back(Node{ A[i], 1, (int)X[A[i]].size() - 1 });
	}

	int num = M, cnt = 1;
	while (num > 0) {
		while (true) {
			while (cur[cnt] < X[cnt].size() && X[cnt][cur[cnt]].cap == 0) cur[cnt]++;
			if (cur[cnt] < X[cnt].size()) break;
			cnt++;
		}

		int cx = cnt; sz = 0;
		while (true) {
			vec[sz] = cx; sz++;
			int nex = -1, res = -1;
			while (X[cx][cur[cx]].cap == 0) cur[cx]++;
			nex = X[cx][cur[cx]].to;
			res = X[cx][cur[cx]].rev;
			X[cx][cur[cx]].cap = 0;
			X[nex][res].cap = 0;
			num--;
			if (nex == cnt) break;
			cx = nex;
		}
		vec[sz] = cnt; sz++;
		for (int i = 0; i < sz; i++) used[vec[i]] = false;

		sz1 = 0;
		for (int i = 0; i < sz; i++) {
			if (used[vec[i]] == true) {
				int num = 0;
				while (true) {
					int cp = v1[sz1 - 1]; if (num) printf(" ");
					printf("%d", cp); num++; used[cp] = false;
					sz1--;
					if (cp == vec[i]) break;
				}
				printf("\n");
			}
			used[vec[i]] = true;
			v1[sz1] = vec[i]; sz1++;
		}
	}
	return 0;
}

Compilation message

postmen.cpp:5:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning (disable: 4996)
 
postmen.cpp: In function 'int main()':
postmen.cpp:29:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    while (cur[cnt] < X[cnt].size() && X[cnt][cur[cnt]].cap == 0) cur[cnt]++;
           ~~~~~~~~~^~~~~~~~~~~~~~~
postmen.cpp:30:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if (cur[cnt] < X[cnt].size()) break;
        ~~~~~~~~~^~~~~~~~~~~~~~~
postmen.cpp:19:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &N, &M);
  ~~~~~^~~~~~~~~~~~~~~~
postmen.cpp:21:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &A[i], &B[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 12672 KB Output is correct
2 Correct 15 ms 12672 KB Output is correct
3 Correct 16 ms 12648 KB Output is correct
4 Correct 14 ms 12800 KB Output is correct
5 Correct 12 ms 12800 KB Output is correct
6 Correct 14 ms 12928 KB Output is correct
7 Correct 21 ms 13568 KB Output is correct
8 Correct 16 ms 12832 KB Output is correct
9 Correct 57 ms 16732 KB Output is correct
10 Correct 13 ms 12800 KB Output is correct
11 Correct 14 ms 12864 KB Output is correct
12 Correct 61 ms 17272 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12672 KB Output is correct
2 Correct 13 ms 12672 KB Output is correct
3 Correct 14 ms 12672 KB Output is correct
4 Correct 14 ms 12800 KB Output is correct
5 Correct 17 ms 12800 KB Output is correct
6 Correct 15 ms 12904 KB Output is correct
7 Correct 18 ms 13568 KB Output is correct
8 Correct 14 ms 12816 KB Output is correct
9 Correct 63 ms 16760 KB Output is correct
10 Correct 16 ms 12800 KB Output is correct
11 Correct 15 ms 12848 KB Output is correct
12 Correct 65 ms 17248 KB Output is correct
13 Correct 90 ms 18452 KB Output is correct
14 Correct 91 ms 17764 KB Output is correct
15 Correct 86 ms 17136 KB Output is correct
16 Correct 106 ms 18424 KB Output is correct
17 Correct 95 ms 17656 KB Output is correct
18 Correct 85 ms 18016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 12672 KB Output is correct
2 Correct 15 ms 12644 KB Output is correct
3 Correct 12 ms 12672 KB Output is correct
4 Correct 17 ms 12800 KB Output is correct
5 Correct 12 ms 12672 KB Output is correct
6 Correct 13 ms 12928 KB Output is correct
7 Correct 19 ms 13568 KB Output is correct
8 Correct 13 ms 12800 KB Output is correct
9 Correct 57 ms 16692 KB Output is correct
10 Correct 16 ms 12848 KB Output is correct
11 Correct 13 ms 12848 KB Output is correct
12 Correct 61 ms 17272 KB Output is correct
13 Correct 105 ms 18680 KB Output is correct
14 Correct 94 ms 17704 KB Output is correct
15 Correct 94 ms 17072 KB Output is correct
16 Correct 97 ms 18400 KB Output is correct
17 Correct 93 ms 17656 KB Output is correct
18 Correct 94 ms 18044 KB Output is correct
19 Execution timed out 541 ms 41952 KB Time limit exceeded
20 Halted 0 ms 0 KB -