반응형
- 2015 acm-icpc 예선
- Problem A Coin Swap
Floyd-Warshall algorithm 으로 풉니다.
int G[501][501];
int c[501];
int d[501];
int n, m;
void initGraph()
{
int MAX = 999;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
G[i][j] = MAX;
for (int i = 0; i < n; i++)
G[i][i] = 0;
}
int main()
{
int T;
for (scanf("%d", &T); T--;)
{
scanf("%d %d", &n, &m);
initGraph();
for (int i = 0; i < m; i++)
{
int x, y;
scanf("%d %d", &x, &y);
G[x-1][y-1] = G[y-1][x-1] = 1;
}
for (int i = 0; i < n; i++)
scanf("%d", &c[i]);
for (int i = 0; i < n; i++)
scanf("%d", &d[i]);
for (int k = 0; k < n; k++)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (G[i][k] + G[k][j] < G[i][j])
G[i][j] = G[i][k] + G[k][j];
int R = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
if (c[i] == 1 && c[i] == d[j])
{
if (i != j)
R += G[i][j];
d[j] = 0;
break;
}
}
printf("%d\n", R);
}
return 0;
}
반응형
'ACM준비 > 2015ACM-ICPCDaejeonRegional' 카테고리의 다른 글
E_Log Jumping (0) | 2015.11.08 |
---|---|
J_Primes Problem (0) | 2015.11.07 |
L_Wheel of Numbers (0) | 2015.11.07 |
I_Stock (0) | 2015.11.07 |