记录编号 77171 评测结果 AAAAAAAAAA
题目名称 新的开始 最终得分 100
用户昵称 Gravatarraywzy 是否通过 通过
代码语言 C++ 运行时间 0.030 s
提交时间 2013-11-01 14:48:00 内存使用 0.66 MiB
显示代码纯文本
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("newstart.in");
ofstream fout("newstart.out");
const int INF=999999999;
int N,ANS=INF,P=0;
int map[302][302],a[303];//存图
int dis[302];//每个节点到MST的最短距离
bool flag[302]={0};//是否加入MST
int father[302];
int Prim()
{
	int i,j,s,u;
	int temp=0;
	for(i=1;i<=N+1;i++)
	{
		s=INF;
		for(j=1;j<=N+1;j++)//找出离MST最小的点加入
		{
			if(flag[j]==0&&dis[j]<s)
			{
				s=dis[j];
				u=j;
			}
		}
		flag[u]=1;temp+=s;
		for(j=1;j<=N+1;j++)
		{
			if(flag[j]==0&&dis[j]>map[u][j])
			{
				dis[j]=map[u][j];
			}
		}
	}
	return temp;
}
int main()
{
	fin>>N;
	int i,j,temp;
	for(i=1;i<=N;i++)
	{
		fin>>a[i];
		map[N+1][i]=a[i];
		map[i][N+1]=a[i];
	}
	for(i=1;i<=N;i++)
		for(j=1;j<=N;j++)
		{
			fin>>temp;
			map[i][j]=temp;
		}
	memset(dis,63,sizeof(dis));
	dis[1]=0;
	fout<<Prim()<<endl;
	return 0;
}