记录编号 83740 评测结果 AAAAAAAAAA
题目名称 [USACO 3.1] 最短网络 最终得分 100
用户昵称 Gravatar超级傲娇的AC酱 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2013-12-06 10:59:56 内存使用 0.33 MiB
显示代码纯文本
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fi("agrinet.in");
ofstream fo("agrinet.out");
int n,m;
const int Len=1000+10;
vector<pair<int,int> >A[Len];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >Q;
void init();
void Prim();
void COGS_init();
int main()
{
	COGS_init();
	Prim();
	return 0;
}
void init()
{
	int x,y,i,p;
	fi>>n>>m;
	for(i=0;i<m;i++)
	{
		fi>>x>>y>>p;
	    A[x].push_back(make_pair(p,y));
	    A[y].push_back(make_pair(p,x));
	}
}
void COGS_init()
{
	int i,j,p;
	fi>>n;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
			fi>>p;
			if(j<i){
				A[i].push_back(make_pair(p,j));
				A[j].push_back(make_pair(p,i));
			}
		}
}
void Prim()
{
	Q.push(make_pair(0,0));
	bool v[Len];int val,Ans=0,i,pos;
	for(i=0;i<n;i++)v[i]=true;
	while(!Q.empty())
	{
		pos=Q.top().second;
		val=Q.top().first;
		Q.pop();
		if(v[pos]==true)
		{
			v[pos]=false;Ans+=val;
			for(i=0;i<A[pos].size();i++)
				Q.push(A[pos][i]);
		}
	}
	fo<<Ans;
}