제출 #5998

#제출 시각아이디문제언어결과실행 시간메모리
5998ainta한자 끝말잇기 (JOI14_kanji)C++98
0 / 100
312 ms12620 KiB
#include "Annalib.h" #define INF 4000000000000000000LL long long w[301][301]; long long w2[301][301]; bool v[90010]; void Anna(int N, int M, int A[], int B[], long long C[], int Q, int S[], int T[], int K, int U[]) { int i, j, k, x, y; long long Mn, tp; for (i = 0; i < K; i++){ v[U[i]] = true; } for (i = 0; i < N; i++){ for (j = 0; j < N; j++){ if (i != j)w[i][j] = w2[i][j] = INF; else w[i][j] = w2[i][j] = 0; } } for (i = 0; i < M; i++){ w[A[i]][B[i]] = C[i]; if (!v[i])w2[A[i]][B[i]] = C[i]; } for (i = 0; i < N; i++){ for (j = 0; j < N; j++){ for (k = 0; k < N; k++){ if (w[j][k]>w[j][i] + w[i][k])w[j][k] = w[j][i] + w[i][k]; if (w2[j][k]>w2[j][i] + w2[i][k])w2[j][k] = w2[j][i] + w2[i][k]; } } } for (i = 0; i < K; i++){ Mn = INF; x = y = -1; for (j = 0; j < N; j++){ for (k = 0; k < N; k++){ tp = w[j][k] - w2[j][A[U[i]]] - w2[B[U[i]]][k]; if (tp != C[U[i]])continue; if (Mn > w2[j][k] - w[j][k]){ Mn = w2[j][k] - w[j][k]; x = j, y = k; } } } if (x == -1) x = (1 << 17) - 1; else x = x*N + y; for (j = 0; j < 17; j++){ if (x&(1 << j))Tap(1); else Tap(0); } } }
#include "Brunolib.h" #define INF 4000000000000000000LL long long dis[301][301]; int num[301][301], n; bool vis[90010]; void Do(int S, int T) { if (S == T)return; int i, x, y; long long Mn = INF; for (i = 0; i < n; i++){ if (num[S][i] != -1 && dis[S][i] + dis[i][T] == dis[S][T] && Mn > dis[S][i]){ Mn = dis[S][i]; x = i; y = num[S][i]; } } Answer(y); Do(x, T); } void Bruno(int N, int M, int A[], int B[], long long C[], int Q, int S[], int T[], int K, int U[], int L, int X[]) { n = N; int i, j, k, x, y; for (i = 0; i < K; i++){ vis[U[i]] = true; } for (i = 0; i < N; i++){ for (j = 0; j < N; j++){ num[i][j] = -1; if (i != j){ dis[i][j] = INF; } else dis[i][j] = 0; } } for (i = 0; i < M; i++){ num[A[i]][B[i]] = i; if (!vis[i]){ dis[A[i]][B[i]] = C[i]; } } for (i = 0; i < N; i++){ for (j = 0; j < N; j++){ for (k = 0; k < N; k++){ if (dis[j][k]>dis[j][i] + dis[i][k])dis[j][k] = dis[j][i] + dis[i][k]; } } } for (i = 0; i < K; i++){ x = 0; for (j = 0; j < 17; j++){ if (X[i * 17 + j])x += (1 << j); } if (x == (1 << 17) - 1)continue; y = x%N; x /= N; dis[A[U[i]]][B[U[i]]] = dis[x][y] - dis[x][A[U[i]]] - dis[B[U[i]]][y] - 1; } for (i = 0; i < N; i++){ for (j = 0; j < N; j++){ for (k = 0; k < N; k++){ if (dis[j][k]>dis[j][i] + dis[i][k])dis[j][k] = dis[j][i] + dis[i][k]; } } } for (i = 0; i < Q; i++){ Do(S[i], T[i]); Answer(-1); } }

컴파일 시 표준 에러 (stderr) 메시지

Bruno.cpp: In function 'void Do(int, int)':
Bruno.cpp:18:11: warning: 'y' may be used uninitialized in this function [-Wmaybe-uninitialized]
  Answer(y);
           ^
Bruno.cpp:8:2: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
  if (S == T)return;
  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...