| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
wa的厉害...In Reply To:.........难道有机关?求大大赐教~ Posted by:mixter at 2005-09-01 15:48:06 > #include <stdio.h>
> #include <iostream>
> using namespace std;
> #define Maxim 10000000
> #define n 101
> int kase;
> typedef int AdjMatrix[n][n];
> typedef struct{
> int fromvex,tovex;
> int length;
> }TreeEdgeNode;
> typedef TreeEdgeNode MST[n-1];
> AdjMatrix G;
> MST T;
>
> void InitCandidateSet(AdjMatrix G,MST T,int r){
> int i,k=0;
> for(i=0;i<kase;i++)
> if(i!=r){
> T[k].fromvex = r;
> T[k].tovex = i;
> T[k++].length= G[r][i];
> }
> }
>
>
> int SelectLightEdge(MST T,int k){
> int min = Maxim,i,minpos;
> for(i=k;i<kase-1;i++)
> if(T[i].length < min){
> min = T[i].length;
> minpos = i;
> }
> return minpos;
> }
>
>
> void McandidateSet(AdjMatrix G,MST T,int k,int v){
> int i,d;
> for(i=k;i<kase-1;i++){
> d = G[v][T[i].tovex];
> if(d<T[i].length){
> T[i].length = d;
> T[i].fromvex= v;
> }
> }
> }
> void PrimMST(AdjMatrix G,MST T,int r){
> int k,m,v;
> TreeEdgeNode e;
> InitCandidateSet(G,T,r);
> for(k=0;k<kase-1;k++){
> m = SelectLightEdge(T,k);
> e = T[m];
> T[m]= T[k];
> T[k]= e;
> v = T[k].tovex;
> McandidateSet(G,T,k+1,v);
> }
> }
> __int64 PrintMST(MST T){
> int i;
> __int64 sum=0;
> for(i=0;i<kase-1;i++){
> sum+=T[i].length;
> }
> return sum;
> }
> void main(){
> freopen("test.txt","r",stdin);
> int i,j;
> cin>>kase;
> for(i=0;i<kase;i++)
> for(j=0;j<kase;j++){
> cin>>G[i][j];
> if(i==j)
> G[i][j]= Maxim;
> }
> PrimMST(G,T,0);
> printf("%I64d\n",PrintMST(T));
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator