⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku2496.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>

int path[100][100];
int way[10000];

int cmp(const void *a, const void *b)
{
	return *(int *)a - *(int *)b;
}

int main()
{
	int t, i, j, k, n, m, p;
	
//	freopen("in.dat", "r", stdin);
	scanf("%d", &t);

	for (n = 0; n < t;)
	{
		 scanf("%d%d", &p, &m);

		 for (i = 0; i < m; i++)
		 {
			 for (j = 0; j < m; j++)
			 {
				 scanf("%d", &path[i][j]);
				 if (path[i][j] == -1 || i == j)
				 {
					 path[i][j] = 1000000;
				 }
			 }
		 }

		 for (k = 0; k < m; k++)
		 {
			 for (i = 0; i < m; i++)
			 {
				 for (j = 0; j < m; j++)
				 {
					 if (i == j)
					 {
						 continue;
					 }
					 if (path[i][k] + path[k][j] < path[i][j])
					 {
						 path[i][j] = path[i][k] + path[k][j];
					 }
				 }
			 }
		 }
		 for (i = 0; i < m; i++)
		 {
			 for (j = 0; j < m; j++)
			 {
//				 printf("%d\t", path[i][j]);
				 way[i * m + j] = path[i][j];
			 }
//			 printf("\n");
		 }
		 
		 qsort(way, m * m, sizeof(way[0]), cmp);
		 
		 for (i = 0; i < m * m; i++)
		 {
//			 printf("%d\n", way[i]);
		 }
		 
		 if (p * m * (m - 1) % 100 == 0)
		 {
			 k = p * m * (m - 1) / 100;
		 }
		 else
		{
			k = (p * m * (m - 1)) / 100 + 1;
		}
		n++;
		 printf("Scenario #%d:\n%d\n\n", n, way[k - 1]);
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -