| ||||||||||
| 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 | |||||||||
Re:0ms,10点全过,cin和coutIn Reply To:0ms,10点全过,cin和cout Posted by:fengyucan at 2019-07-22 09:22:02 > #include<cstdio>
> #include<iostream>
> #include<algorithm>
> using namespace std;
> const int N=200;
> struct node{
> int x,y,z;
> };
> int n,a,b,f[N];
> char ch,ch1;
> node data[N];
> bool cmp(node a,node b){
> return a.z<b.z;
> }
> int get1(int x){
> if(f[x]!=x) f[x]=get1(f[x]);
> return f[x];
> }
> int main(){
> freopen("poj1251.in","r",stdin);
>
> while(1){
> cin>>n;
>
> if(n==0) break;
>
> int ii=0;
>
> for(int i=1;i<n;++i){
> cin>>ch>>a;
>
> for(int j=1;j<=a;++j){
> cin>>ch1>>b;
>
> ii++;
> data[ii].x=ch-'A'+1;
> data[ii].y=ch1-'A'+1;
> data[ii].z=b;
> }
> }
>
> sort(data+1,data+ii+1,cmp);
>
> //for(int i=1;i<=ii;++i) printf("%d %d %d\n",data[i].x,data[i].y,data[i].z);
> //printf("\n");
>
> for(int i=1;i<=n;++i) f[i]=i;
> int num=0;
> int num1=0;
> ii=1;
>
> while(num1!=n-1){
> int x=get1(data[ii].x);int y=get1(data[ii].y);
>
> if(x==y){
> ii++;
> continue;
> }
>
> else{
> num1++;
> f[y]=x;
> num+=data[ii].z;
> ++ii;
> }
>
> }
>
> cout<<num<<endl;
>
> }
>
> return 0;
>
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator