結果

問題 No.1647 Travel in Mitaru city 2
ユーザー 👑 ygussanyygussany
提出日時 2021-08-01 09:00:35
言語 C
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 1,129 bytes
コンパイル時間 235 ms
コンパイル使用メモリ 30,336 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-10-03 16:09:09
合計ジャッジ時間 9,029 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 WA * 1
other AC * 2 WA * 46
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdio.h>

typedef struct List {
	struct List *next;
	int v;
} list;

int main()
{
	int i, H, W, N, x[100001], y[100001], num[2][100001] = {};
	list *adj[100001] = {}, d[100001], *p;
	scanf("%d %d %d", &H, &W, &N);
	for (i = 1; i <= N; i++) {
		scanf("%d %d", &(x[i]), &(y[i]));
		num[0][x[i]]++;
		num[1][y[i]]++;
		d[i].v = y[i];
		d[i].next = adj[x[i]];
		adj[x[i]] = &(d[i]);
	}
	
	int j, k, l;
	for (i = 1; i <= H; i++) {
		if (num[0][i] <= 1) continue;
		for (p = adj[i]; p != NULL; p = p->next) if (num[1][p->v] >= 2) break;
		if (p == NULL) continue;
		else j = p->v;
		for (p = p->next; p != NULL; p = p->next) if (num[1][p->v] >= 2) break;
		if (p == NULL) continue;
		else k = p->v;
		break;
	}
	if (i > H) printf("-1\n");
	else {
		printf("4\n");
		for (l = 1; l <= N; l++) if (x[l] != i && y[l] == j) break;
		printf("%d", l);
		for (l = 1; l <= N; l++) if (x[l] == i && y[l] == j) break;
		printf(" %d", l);
		for (l = 1; l <= N; l++) if (x[l] == i && y[l] == k) break;
		printf(" %d", l);
		for (l = 1; l <= N; l++) if (x[l] != i && y[l] == k) break;
		printf(" %d\n", l);
	}
	fflush(stdout);
	return 0;
}
0