#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#define MAX 1000009
using namespace std;
long long par[MAX];
struct node
{
long long u,v,cost;
}arr[MAX];
long long khoj_rep(long long r)
{
if(par[r]==r)
{
return r;
}
else
{
return par[r]=khoj_rep(par[r]);
}
}
bool cmp(node lhs,node rhs)
{
return lhs.cost<rhs.cost;
}
int main()
{
long long N,M,K,i,j,k,l,m,sum,sum1,u,v,a,b,c,n,tag=0;
long long arr1[12],arr2[12],arr3[12];
while(scanf("%lld",&N)==1)
{
if(tag)
{
cout<<endl;
}
tag=1;
n=N-1;
for(i=1;i<=N;i++)
{
par[i]=i;
}
while(n--)
{
cin>>a>>b>>c;
}
cin>>K;
for(i=0;i<K;i++)
{
cin>>arr1[i]>>arr2[i]>>arr3[i];
}
cin>>M;
for(j=0;j<M;j++)
{
cin>>arr[j].u>>arr[j].v>>arr[j].cost;
}
sort(arr,arr+M,cmp);
sum=0;
for(k=0;k<j;k++)
{
u=khoj_rep(arr[k].u);
v=khoj_rep(arr[k].v);
if(u!=v)
{
par[u]=v;
sum+=arr[k].cost;
}
}
m=0;
for(l=j;l<M+K;l++)
{
arr[l].u=arr1[m];
arr[l].v=arr2[m];
arr[l].cost=arr3[m];
m++;
}
sort(arr,arr+l,cmp);
for(i=1;i<=N;i++)
{
par[i]=i;
}
sum1=0;
for(k=0;k<l;k++)
{
u=khoj_rep(arr[k].u);
v=khoj_rep(arr[k].v);
if(u!=v)
{
par[u]=v;
sum1+=arr[k].cost;
}
}
cout<<sum<<endl;
cout<<sum1<<endl;
memset(par,0,sizeof(par));
}
return 0;
}
#include<cstring>
#include<algorithm>
#include<iostream>
#define MAX 1000009
using namespace std;
long long par[MAX];
struct node
{
long long u,v,cost;
}arr[MAX];
long long khoj_rep(long long r)
{
if(par[r]==r)
{
return r;
}
else
{
return par[r]=khoj_rep(par[r]);
}
}
bool cmp(node lhs,node rhs)
{
return lhs.cost<rhs.cost;
}
int main()
{
long long N,M,K,i,j,k,l,m,sum,sum1,u,v,a,b,c,n,tag=0;
long long arr1[12],arr2[12],arr3[12];
while(scanf("%lld",&N)==1)
{
if(tag)
{
cout<<endl;
}
tag=1;
n=N-1;
for(i=1;i<=N;i++)
{
par[i]=i;
}
while(n--)
{
cin>>a>>b>>c;
}
cin>>K;
for(i=0;i<K;i++)
{
cin>>arr1[i]>>arr2[i]>>arr3[i];
}
cin>>M;
for(j=0;j<M;j++)
{
cin>>arr[j].u>>arr[j].v>>arr[j].cost;
}
sort(arr,arr+M,cmp);
sum=0;
for(k=0;k<j;k++)
{
u=khoj_rep(arr[k].u);
v=khoj_rep(arr[k].v);
if(u!=v)
{
par[u]=v;
sum+=arr[k].cost;
}
}
m=0;
for(l=j;l<M+K;l++)
{
arr[l].u=arr1[m];
arr[l].v=arr2[m];
arr[l].cost=arr3[m];
m++;
}
sort(arr,arr+l,cmp);
for(i=1;i<=N;i++)
{
par[i]=i;
}
sum1=0;
for(k=0;k<l;k++)
{
u=khoj_rep(arr[k].u);
v=khoj_rep(arr[k].v);
if(u!=v)
{
par[u]=v;
sum1+=arr[k].cost;
}
}
cout<<sum<<endl;
cout<<sum1<<endl;
memset(par,0,sizeof(par));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment