Submission #72774521


Source Code Expand

Copy
#include <stdio.h>
#define INF 1010101010
int n, k;
int query[5123][4];
int ans[128][128];
int main(void) {
int i, j, l;
if (scanf("%d%d", &n, &k) != 2) return 1;
for (i = 0; i < k; i++) {
if (scanf("%d%d%d", &query[i][0], &query[i][1], &query[i][2]) != 3) return 1;
if (query[i][0] == 1 && scanf("%d", &query[i][3]) != 1) return 1;
}
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) ans[i][j] = INF;
ans[i][i] = 0;
}
for (i = 0; i < k; i++) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

#define INF 1010101010

int n, k;
int query[5123][4];

int ans[128][128];

int main(void) {
	int i, j, l;
	if (scanf("%d%d", &n, &k) != 2) return 1;
	for (i = 0; i < k; i++) {
		if (scanf("%d%d%d", &query[i][0], &query[i][1],  &query[i][2]) != 3) return 1;
		if (query[i][0] == 1 && scanf("%d", &query[i][3]) != 1) return 1;
	}
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) ans[i][j] = INF;
		ans[i][i] = 0;
	}
	for (i = 0; i < k; i++) {
		if (query[i][0] == 0) {
			int res = ans[query[i][1]][query[i][2]];
			printf("%d\n", res < INF ? res : -1);
		} else if (query[i][0] == 1) {
			int f = query[i][1], t = query[i][2], cost = query[i][3];
			if (ans[f][t] > cost) {
				ans[f][t] = cost;
				for (j = 1; j <= n; j++) {
					for (l = 1; l <= n; l++) {
						int newcost = ans[j][f] + ans[f][t] + ans[t][l];
						if (newcost < ans[j][l]) ans[j][l] = newcost;
					}
				}
			}
			if (ans[t][f] > cost) {
				ans[t][f] = cost;
				for (j = 1; j <= n; j++) {
					for (l = 1; l <= n; l++) {
						int newcost = ans[j][t] + ans[t][f] + ans[f][l];
						if (newcost < ans[j][l]) ans[j][l] = newcost;
					}
				}
			}
		}
	}
	return 0;
}

Submission Info

Submission Time
Task F - 船旅
User mikecat
Language C23 (GCC 14.2.0)
Score 100
Code Size 1214 Byte
Status AC
Exec Time 7 ms
Memory 1744 KiB

Judge Result

Set Name set01 set02 set03 set04 set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
Case Name Status Exec Time Memory
data1 AC 1 ms 1596 KiB
data2 AC 1 ms 1636 KiB
data3 AC 1 ms 1600 KiB
data4 AC 4 ms 1744 KiB
data5 AC 7 ms 1744 KiB


2026-01-26 (Mon)
19:40:38 +09:00