Pagini recente » Cod sursa (job #1350956) | Cod sursa (job #1362337) | Cod sursa (job #1850699) | Cod sursa (job #1633807) | Cod sursa (job #2276749)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class APM implements Comparator<APM> {
int st;
int dr;
int cost;
static int[] father = new int[200002];
static ArrayList<APM> muchii = new ArrayList<APM>();
static ArrayList<APM> result = new ArrayList<APM>();
public APM(int x, int y, int z)
{
this.st = x;
this.dr = y;
this.cost = z;
}
public APM()
{
}
public int compare(APM a, APM b)
{
return a.cost - b.cost;
}
static int find(int x)
{
if(x == father[x]) return x;
father[x] = find(father[x]);
return father[x];
}
static void union(int x, int y)
{
int i = find(x);
int j = find(y);
father[i] = j;
}
public static void main(String[] args)
throws Exception
{
File file = new File ("apm.in");
Scanner keyboard = new Scanner(file);
int n = keyboard.nextInt();
int m = keyboard.nextInt();
for(int i=1;i<=n;i++)
{
father[i] = i;
}
for(int i=1;i<=m;i++)
{
int x = keyboard.nextInt();
int y = keyboard.nextInt();
int z = keyboard.nextInt();
muchii.add(new APM(x,y,z));
}
Collections.sort(muchii, new APM());
int sum = 0;
int counter = 0;
for(APM search : muchii)
{
if(find(search.st) != find(search.dr))
{
counter ++;
union(search.st, search.dr);
sum += search.cost;
result.add(new APM(search.st, search.dr, search.cost));
}
}
File filewrite = new File ("apm.out");
FileWriter writer = new FileWriter(filewrite);
writer.write(String.valueOf(sum));
writer.write("\r\n");
writer.write(String.valueOf(counter));
writer.write("\r\n");
for(APM search : result)
{
writer.write(String.valueOf(search.st) + " " + String.valueOf(search.dr) + "\r\n");
}
writer.flush();
keyboard.close();
}
}