Cod sursa(job #1431173)

Utilizator Menabil_Ailin_325CCAilin Menabil Menabil_Ailin_325CC Data 9 mai 2015 01:15:33
Problema Parcurgere DFS - componente conexe Scor 45
Compilator java Status done
Runda Arhiva educationala Marime 1.49 kb
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
	public static int nodes;
	public static ArrayList<ArrayList<Integer>> adj;
	public static int[] visited;
	public static int count = 0;
	
	public static void doDFS(int n){	
		visited[n] = 1;	

		for(int i = 0; i < adj.get(n).size(); i ++){
			if(visited[adj.get(n).get(i)] == 0 ){
				System.out.println(i);
				doDFS(adj.get(n).get(i));
			}			
		}			
	}
	
	public static void DFS(){		
		for(int i = 0;i < nodes; i++){
			if(visited[i] == 0){
				doDFS(i);
				count++;  }		
		}		
	}
	
	
	public static void main(String[] args) throws IOException {
		Scanner s = new Scanner(new FileInputStream ("dfs.in"));
		nodes = s.nextInt();
		int edges = s.nextInt();
		visited = new int[nodes];
		
		
		adj = new ArrayList<ArrayList<Integer>>();
		for (int i = 0; i < nodes; ++i) {
		    ArrayList<Integer> row = new ArrayList<Integer>();
		    for(int j = 0; j < nodes; j++)
		    	row.add(j, 0);
		    adj.add(row);
		}
		
		while(s.hasNext()){
			int a = s.nextInt();
			int b = s.nextInt();
			adj.get(a-1).add(b-1);
			adj.get(b-1).add(a-1);

		}
		s.close();
	//	for(int i =0 ; i < nodes; i++){
	//		for(int j = 0; j < nodes; j++){
	//			System.out.print(adj[i][j] + " ");
	//		}
	//	    System.out.println(" ");}
		DFS();
		
		FileWriter fw = new FileWriter("dfs.out");
		fw.write(String.valueOf(count));
		fw.close();
	}
}