http://poj.org/problem?id=3723
//* @author:
//Kruskal �㷨:
import java.io.*;
import java.util.*;
class cin
{
static int leave=0;
static StringTokenizer st;
static BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
static int nextInt() throws Exception
{
while (leave==0)
{
st=new StringTokenizer(in.readLine());
leave=st.countTokens();
}
leave--;
return Integer.parseInt(st.nextToken());
}
}
class E
{
int weight,from,to;
void init(int x,int y,int z)
{
weight=z;
from=x;
to=y;
}
}
class Cmp implements Comparator
{
public int compare(Object a,Object b)
{
int c=((E)a).weight-((E)b).weight;
if(c< 0)return -1;
return 1;
}
}
class Set
{
int father[];
int num;
Set(int n)
{
num=n;
father=new int[n];
this.clear();
}
void clear()
{
int i;
for(i=0;i< num;i++)father[i]=i;
}
int findF(int x)
{
int t=x;
while(t!=father[t])
{
t=father[t];
}
while(x!=father[x])
{
father[x]=t;
x=father[x];
}
return t;
}
boolean union(int x,int y)
{
int fx=findF(x),fy=findF(y);
if(fx==fy)return false;
father[fy]=fx;
num--;
return true;
}
}
class Kruskal
{
E e[];
int numOfE,numOfTree,i,j,numOfD;
Set points;
Kruskal(E a[],int m,int n)
{
e=a;
numOfE=m;
numOfD=n;
points=new Set(numOfD);
}
int cost()
{
int sum=0,f1,f2;
Arrays.sort(e,new Cmp());
for(i=0;i< numOfE;i++)
{
if(points.num==1)break;
if(points.union(e[i].from,e[i].to))
{
sum+=e[i].weight;
}
}
return sum+10000*points.num;
}
}
public class Main {
public static void main(String args[]) throws Exception
{
int g,b,r,t,i;
E e[];
t=cin.nextInt();
Kruskal data;
while((t--)>0)
{
g=cin.nextInt();
b=cin.nextInt();
r=cin.nextInt();
e=new E[r];
for(i=0;i< r;i++)
{
e[i]=new E();
e[i].init(cin.nextInt(),cin.nextInt()+g,10000-cin.nextInt());
}
data=new Kruskal(e,r,g+b);
System.out.println(data.cost());
}
}
}
Meta
-
Recent Posts
Recent Comments
Archives
- May 2024
- April 2023
- February 2023
- January 2023
- December 2022
- November 2022
- September 2022
- June 2022
- July 2021
- January 2021
- February 2020
- September 2019
- March 2018
- February 2018
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
Categories
