|
|
|
@ -13,22 +13,22 @@ void floyd(int k) {
|
|
|
|
|
mp[i][j] = mp[i][k] + mp[k][j];
|
|
|
|
|
}
|
|
|
|
|
int main() {
|
|
|
|
|
// 加快读入
|
|
|
|
|
ios::sync_with_stdio(false), cin.tie(0);
|
|
|
|
|
while (cin >> n >> m >> q && n + m + q) {
|
|
|
|
|
if (t) printf("\n"); // 谜之格式
|
|
|
|
|
printf("Case %d:\n", ++t);
|
|
|
|
|
memset(mp, inf, sizeof mp);
|
|
|
|
|
memset(flag, false, sizeof flag);
|
|
|
|
|
for (int i = 0; i <= n; ++i)
|
|
|
|
|
mp[i][i] = 0;
|
|
|
|
|
for (int i = 0; i <= n; i++) mp[i][i] = 0;
|
|
|
|
|
while (m--) {
|
|
|
|
|
scanf("%d %d %d", &u, &v, &w);
|
|
|
|
|
if (w < mp[u][v])
|
|
|
|
|
mp[u][v] = w;
|
|
|
|
|
cin >> u >> v >> w;
|
|
|
|
|
if (w < mp[u][v]) mp[u][v] = w;
|
|
|
|
|
}
|
|
|
|
|
while (q--) {
|
|
|
|
|
scanf("%d", &w);
|
|
|
|
|
cin >> w;
|
|
|
|
|
if (w == 0) {
|
|
|
|
|
scanf("%d", &u);
|
|
|
|
|
cin >> u;
|
|
|
|
|
if (flag[u])
|
|
|
|
|
printf("ERROR! At point %d\n", u);
|
|
|
|
|
else {
|
|
|
|
@ -36,7 +36,7 @@ int main() {
|
|
|
|
|
floyd(u);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
scanf("%d %d", &u, &v);
|
|
|
|
|
cin >> u >> v;
|
|
|
|
|
if (!(flag[u] && flag[v]))
|
|
|
|
|
printf("ERROR! At path %d to %d\n", u, v);
|
|
|
|
|
else if (mp[u][v] == inf)
|
|
|
|
|