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 |
这个输入竟然让我困惑了很久。。。。。瀑布汗。。#include<stdio.h> #include<algorithm> #include<string.h> #include<stdlib.h> #include<iostream> #define inf 99999999 using namespace std; struct node { int v1; int v2; int len; }; int n; node e[100]; int map[100][100]; int dis[100][100]; void init() { int i,j; for(i=0;i<100;i++) for(j=0;j<100;j++) { dis[i][j]=inf; } } int prim() { int i,j,leng,minl,min,vx,vy; int ret=0; for(i=1;i<=n-1;i++) { e[i].v1=1; e[i].v2=i+1; e[i].len=dis[1][i+1]; } for(i=1;i<=n-1;i++) { min=-1; minl=inf; for(j=i;j<=n-1;j++) { if(e[j].len<minl) { minl=e[j].len; min=j; } } if(min==-1) break; ret=ret+minl; swap(e[min],e[i]); vx=e[i].v2; for(j=i+1;j<=n-1;j++) { vy=e[j].v2; leng=dis[vx][vy]; if(leng<e[j].len) { e[j].len=leng; e[j].v1=vx; } } } return ret; } int main() { int i,t,ans,j; char start,end,ch1; while(cin>>n&&n!=0) { init(); for(i=0;i<n-1;i++) { cin>>ch1>>t; start=ch1-'A'+1; for(j=0;j<t;j++) { cin>>ch1; end=ch1-'A'+1; /// cout<<(int)start<<" "<<(int)end<<endl;; cin>>dis[start][end]; dis[end][start]=dis[start][end]; } } ans=prim(); printf("%d\n",ans); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator