poj 1258 问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:16:29
不知道错在哪里了?
#include<iostream>
#include<map>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;

int sum=0;
struct edge{
int bv;
int tv;
int len;

edge(){

bv=0;
tv=0;
len=0;
}
};
struct edge a[100001];

bool cmp(struct edge X,struct edge Y)
{ return X.len<Y.len?true:false;
}
int seek(int set[100001],int v)
{ int i=v;
while(set[i]>-1)
i=set[i];
return i;
}
int findvalue(int temp,int temp1,int k)
{ for(int i=0;i<k;i++)
if(a[i].bv==temp&&a[i].tv==temp1)
return a[i].len;

return 0;
}

void Kruskal(int n,int k)
{ int i=0,j=0;
int set[100001]={0};
for(int i=0;i<100001;i++)
set[i]=-1;
while(i<n&&j<k){
int temp=seek(set,a[j].bv);
int temp1=seek(set,a[j].tv);<

没这么复杂吧!
#include <cstdlib>
#include <iostream>
#include <math.h>
#define MAX 999999
using namespace std;
int main(int argc, char *argv[])
{ int n,i,j,a[110][110],flag[110],used[110],k,sum,count,min;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{used[i]=0;flag[i]=0;
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
flag[0]=sum=count=0;used[0]=1;
while(count<n-1)
{min=MAX;
for(i=0;i<=count;i++)
for(j=1;j<n;j++)
if(used[j]==0&&a[flag[i]][j]<min)
{min=a[flag[i]][j];k=j;}
sum+=min;count++;flag[count]=k;used[k]=1;
}
printf("%d\n",sum);
}
system("PAUSE");
return EXIT_SUCCESS;
}