考查点:最小生成树
提交情况:1次AC
所得:如何用sanf输入一个二维数组,在元素前仍要加“&”
AC_Code:
- #include <stdio.h>
- #define MAX 501
- bool visited[MAX];
- int lowcost[MAX],ways[MAX][MAX],longest,min;
- int prim(int n)
- {
- int v;
- longest=0;
- visited[0]=true;
- for(int i=0;i<n;i++)
- lowcost[i]=ways[0][i];
- for(int i=1;i<n;i++)
- {
- min=65537;
- for(int j=0;j<n;j++)
- if(visited[j]==false&&lowcost[j]<min)
- {
- min=lowcost[j];
- v=j;
- }
- visited[v]=true;
- longest=(min>longest)?min:longest;
- for(int j=0;j<n;j++)
- {
- if(visited[j]==false&&ways[v][j]<lowcost[j])
- lowcost[j]=ways[v][j];
- }
- }
- return longest;
- }
- int main()
- {
- int t,n;
- scanf("%d",&t);
- for(int i=0;i<t;i++)
- {
- scanf("%d",&n);
- for(int j=0;j<n;j++)
- visited[j]=false;
- for(int j=0;j<n;j++)
- for(int k=0;k<n;k++)
- scanf("%d",&ways[j][k]);//开始写成了ways[i][j]~
- printf("%d/n",prim(n));
- }
- return 0;
- }
- 这道题要求的是在最小路径中最长的那条路