Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么这个过不了poj1258,不就是裸prim么

Posted by Greetrix at 2014-07-24 17:47:33
#include<iostream>
using namespace std;
int n;
long dis[105][105];
long cost[105];
bool vis[105];
long long ans=0;
void prim()
{
	int k;
	for (int i=1; i<=n; i++)
	{
		long minn=2139062143;
		for (int j=1; j<=n; j++)
		{
		     if (!vis[j] && cost[j]<minn)
			 {
			 	minn=cost[j];
			 	k=j;
			 }	
		}
		vis[k]=true;
		ans+=minn;
		for (int j=1; j<=n; j++)
			if (!vis[j] && dis[k][j]>0 && dis[k][j]<cost[j])
			cost[j]=dis[k][j];
	}
}
void init()
{
	cin>>n;
	for (int i=1; i<=n; i++)
	   for (int j=1; j<=n; j++)
	     cin>>dis[i][j];
    for (int i=1; i<=n; i++)
    {
    	cost[i]=2139062143;
    	vis[i]=false;
    }
    cost[1]=0;
}
int main()
{
	init();
	prim();
	cout<<ans<<endl;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator