ACM준비/2015ACM-ICPCDaejeonRegional

A_Coin Swap

조규현15 2015. 11. 7. 20:57
반응형
  • 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