Cod sursa(job #1705158)

Utilizator greenroFlorin Calota greenro Data 19 mai 2016 23:58:07
Problema BFS - Parcurgere in latime Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.57 kb
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

 class Main {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        BufferedReader in = new BufferedReader(new FileReader("dfs.in"));
        String temp[] = in.readLine().split(" ");
        int N = Integer.parseInt(temp[0]);
        int M = Integer.parseInt(temp[1]);
        List<List<Integer>> g = new ArrayList<>();
        for (int i = 0; i <= N; i++) {
            g.add(i, new ArrayList<Integer>());
        }
        for (int i = 0; i < M; i++) {
            temp = in.readLine().split(" ");
            int x = Integer.parseInt(temp[0]);
            int y = Integer.parseInt(temp[1]);
            g.get(x).add(y);
            g.get(y).add(x);
        }
        vis = new int[N + 1];
        int cnx = 0;
        for (int i = 1; i <= N; i++) {
            if (vis[i] == 0) {
                cnx++;
                dfs(i, g);
            }
        }
        PrintWriter out = new PrintWriter("dfs.out");        
        System.out.println(cnx);
        out.print(cnx);
        in.close();
        out.close();
    }

    static int[] vis;

    static void dfs(int n, List<List<Integer>> g) {
        vis[n] = 1;
        for (int i = 0; i < g.get(n).size(); i++) {
            int ngh = g.get(n).get(i);
            if (vis[ngh] == 0) {
                dfs(ngh, g);
            }
        }
    }
}