Submission details
Task:Bus lines
Sender:Anonyymit Algoritmistit
Submission time:2015-09-30 19:29:03 +0300
Language:Java
Status:COMPILE ERROR

Compiler report

input/T3.java:35: error: cannot find symbol
        IO io = new IO();
        ^
  symbol:   class IO
  location: class T3
input/T3.java:35: error: cannot find symbol
        IO io = new IO();
                    ^
  symbol:   class IO
  location: class T3
2 errors

Code

package kilo4;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author asjuvone
 */
public class T3 {
    
    public static int n;
    public static int m;
    public static int k;
    public static Linja[] linjat;
    public static Linja[] poistot;
    public static int[] isa;
    public static int[] koko;
    public static int yhdistysCount;
    
    
    
    public static void main(String[] args) {
        IO io = new IO();
        
        n = io.nextInt();
        m = io.nextInt();
        k = io.nextInt();
        
        HashMap<Linja, Integer> ekaEsiintyma = new HashMap<>();
        HashMap<Linja, Integer> tuplat = new HashMap<>();
        
        linjat = new Linja[m+1];
        for (int i=1; i<=m; i++) {
            Linja uus = new Linja(io.nextInt(), io.nextInt());
            if (tuplat.containsKey(uus)) {
                tuplat.put(uus, tuplat.get(uus) + 1);
            } else {
                tuplat.put(uus, 1);
                ekaEsiintyma.put(uus, i);
            }
            linjat[i] = (uus);
        }
        ArrayList<Linja> poistot = new ArrayList<>();
        for (int i=1; i<=k; i++) {
            int kek = io.nextInt();
            Linja poisto = linjat[kek];
            linjat[kek] = null;
            if (tuplat.get(poisto) > 1) {
                tuplat.put(poisto, tuplat.get(poisto)-1);
                poistot.add(new Linja(-1,-1));
                continue;
            }
            poistot.add(poisto);
        }
        
        yhdistysCount = 0;
        int[] vastaukset = new int[k+1];
        isa = new int[n+1];
        koko = new int[n+1];
        Arrays.fill(koko, 1);
        for (int i=1; i<=n; i++) isa[i] = i;
        
        for (int i=1; i<=m; i++) {
            if (linjat[i] == null) continue;
            yhdista(linjat[i]);
        }
        //System.out.println("Region count kaikkien rikkojen jälkeen: " + (n - yhdistysCount));
        for (int i=k; i>=1; i--) {
            //System.out.println("n: " + n + ", regincount: " + (n-yhdistysCount));
            vastaukset[i] = n - yhdistysCount;
            if (poistot.get(i-1).a > 0) yhdista(poistot.get(i-1));
        }
        //System.out.println(Arrays.toString(vastaukset));
        for (int i=1; i<=k; i++) {
            System.out.println(vastaukset[i]);
        }
        io.close();
    }
    
    public static void yhdista(Linja uus) {
        //System.out.println("Yhdistetään " + uus.a + " ja " + uus.b);
        //System.out.println("Isät: " + Arrays.toString(isa));
        //System.out.println("moi" + " " + uus.a + " , " + uus.b);
        int a = uus.a;
        int b = uus.b;
        while (a != isa[a]) {
            a = isa[a];
        }
        while (b != isa[b]) b = isa[b];
        if (a == b) {
            
            return;
        }
        if (koko[a] > koko[b]) {
            isa[b] = a;
            koko[a] += koko[b];
        } else {
            isa[a] = b;
            koko[b] += koko[a];
        }
        yhdistysCount++;
    }
}

class Linja {
    public int a;
    public int b;

    public Linja(int a, int b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public boolean equals(Object obj) {
        Linja toinen = (Linja) obj;
        if (toinen.a == this.b && toinen.b == this.a) return true;
        return toinen.a == this.a && toinen.b == this.b;
    }

    @Override
    public int hashCode() {
        return a + 36*b;
    }
    
    
}