diff --git a/src/algoritmos/LazyGreedy.java b/src/algoritmos/LazyGreedy.java
index 0204b4e37af9ec38413078ad91c1eeb02851f51f..23fbeb85602596aa0e863507ee2744bd1c402c52 100644
--- a/src/algoritmos/LazyGreedy.java
+++ b/src/algoritmos/LazyGreedy.java
@@ -5,8 +5,6 @@ import grafos.Actor;
 import grafos.DirectedSocialNetwork;
 import interfaces.SeedChooser;
 
-import java.io.FileWriter;
-import java.io.IOException;
 import java.util.HashSet;
 import java.util.PriorityQueue;
 
@@ -15,15 +13,14 @@ public class LazyGreedy implements SeedChooser<Actor> {
 	private int cont;
 	private double[] spreadData;
 	private double[] callData;
-	
 
 	public LazyGreedy(DirectedSocialNetwork g) {
 		this.grafo = g;
 	}
 
 	/**
-	 * Cria uma fila de prioridade por ganho marginal de todos os vértices do grafo
-	 * e cada vértice é inicializado com ganho de NaN e inválido
+	 * Cria uma fila de prioridade por ganho marginal de todos os vértices do
+	 * grafo e cada vértice é inicializado com ganho de NaN e inválido
 	 * 
 	 * @return uma fila de prioridade com o ganho marginal de todos os vértices
 	 */
@@ -42,13 +39,13 @@ public class LazyGreedy implements SeedChooser<Actor> {
 	public HashSet<Actor> escolher(int k) {
 		HashSet<Actor> semente = new HashSet<>();
 		cont = 0;
-		spreadData = new double[k+1];
-		callData = new double[k+1];
+		spreadData = new double[k + 1];
+		callData = new double[k + 1];
 
 		// create priority queue of all nodes, with marginal gain delta +inf
 		PriorityQueue<MarginalGain> fila = priorityQueueOfGains();
 
-		double MaxSpread = 0; 
+		double MaxSpread = 0;
 
 		while (semente.size() < k) {
 			// set all gains invalid
@@ -61,9 +58,8 @@ public class LazyGreedy implements SeedChooser<Actor> {
 				if (max.isValid() == true) {
 					semente.add(max.getVertice());
 					MaxSpread = MaxSpread + max.getGain();
-					System.out.println(semente.size()+"\t"+MaxSpread);
+//					System.out.println(semente.size() + "\t" + MaxSpread);
 					spreadData[semente.size()] = MaxSpread;
-//					callData[semente.size()] = cont;
 					break;
 				} else {
 					double sigma = cascata(max.getVertice(), semente);
@@ -75,55 +71,21 @@ public class LazyGreedy implements SeedChooser<Actor> {
 				}
 			}
 		}
-		System.out.println("chamadas: " + cont);
+		System.out.println("Chamadas: " + cont);
+		System.out.println("Chamadas depois da 1a iteracao: " + (cont - grafo.vertexSet().size()));
 		return semente;
 	}
-	
-	public int callToSigma(){
+
+	public int callToSigma() {
 		return this.cont;
 	}
-	public double[] getSpreadData(){
+
+	public double[] getSpreadData() {
 		return this.spreadData;
 	}
-	
-	public double[] getCallData(){
-		return this.callData;
-	}
-	
-	public HashSet<Actor> toFile(int k, FileWriter writer) throws IOException {
-		HashSet<Actor> semente = new HashSet<>();
-		cont = 0;
-
-		// create priority queue of all nodes, with marginal gain delta +inf
-		PriorityQueue<MarginalGain> fila = priorityQueueOfGains();
 
-		double MaxSpread = 0; 
-
-		while (semente.size() < k) {
-			// set all gains invalid
-			for (MarginalGain mg : fila) {
-				mg.setValid(false);
-			}
-
-			while (true) {
-				MarginalGain max = fila.poll();
-				if (max.isValid() == true) {
-					semente.add(max.getVertice());
-					MaxSpread = MaxSpread + max.getGain();
-					writer.write(semente.size()+"\t"+MaxSpread);
-					break;
-				} else {
-					double sigma = cascata(max.getVertice(), semente);
-					double delta = sigma - MaxSpread;
-					max.setGain(delta);
-					max.setValid(true);
-					fila.add(max);
-					cont++;
-				}
-			}
-		}
-//		System.out.println("chamadas: " + cont);
-		return semente;
+	public double[] getCallData() {
+		return this.callData;
 	}
 
 	private double cascata(Actor v, HashSet<Actor> semente) {
@@ -140,14 +102,13 @@ public class LazyGreedy implements SeedChooser<Actor> {
 
 		startTime = System.nanoTime();
 		HashSet<Actor> seed2 = new LazyGreedy(g).escolher(15);
-		System.out.println("LazyGreedy = "
-				+ g.espectedSpread(seed2, true) + ", tempo: "
-				+ (System.nanoTime() - startTime) / 1000);
+		System.out.println(
+				"LazyGreedy = " + g.espectedSpread(seed2, true) + ", tempo: " + (System.nanoTime() - startTime) / 1000);
 
 		startTime = System.nanoTime();
 		HashSet<Actor> seed1 = new GreedyIC(g).escolher(10);
-		System.out.println("GeneralGreedy = " + g.espectedSpread(seed1, true)
-				+ ", tempo: " + (System.nanoTime() - startTime) / 1000);
+		System.out.println("GeneralGreedy = " + g.espectedSpread(seed1, true) + ", tempo: "
+				+ (System.nanoTime() - startTime) / 1000);
 	}
 
 }
diff --git a/src/algoritmos/PrevalentSeed.java b/src/algoritmos/PrevalentSeed.java
index f368691966085802a0053f1ceacae874640ac8ae..a2472f028082fad7dbf7f3513640777948f55547 100644
--- a/src/algoritmos/PrevalentSeed.java
+++ b/src/algoritmos/PrevalentSeed.java
@@ -2,7 +2,6 @@ package algoritmos;
 
 import java.util.HashSet;
 import java.util.PriorityQueue;
-import java.util.Random;
 import java.util.Set;
 
 import util.ComparaPorGrau;
@@ -10,10 +9,10 @@ import util.ComparaPorGrau;
 import com.google.common.collect.MinMaxPriorityQueue;
 
 import algoritmos.MarginalGain;
-import geradores.SocialNetworkGenerate;
 import grafos.Actor;
 import grafos.DirectedSocialNetwork;
 import interfaces.SeedChooser;
+import readgraph.GraphReader;
 
 /*De acordo com os experimentos, utilizando o CELF como subrotina
  *  dentro do conjunto dominante obtem-se um resultado semelhante 
@@ -26,7 +25,6 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 	private int cont; // número de chamadas a sigma
 	private double[] spreadData; // histograma da propagação esperada
 	private double[] callData;
-	
 
 	public PrevalentSeed(DirectedSocialNetwork g) {
 		this.grafo = g;
@@ -35,10 +33,9 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 	public HashSet<Actor> preSelecao(DirectedSocialNetwork grafo) {
 		int n = grafo.vertexSet().size();
 
-		// DS <-- {}
 		HashSet<Actor> candidatos = new HashSet<>();
 
-		// compare os vertices pelo grau
+		// comparador de vertices pelo grau
 		ComparaPorGrau comp = new ComparaPorGrau(grafo);
 
 		MinMaxPriorityQueue<Actor> heapMinMax = null;
@@ -94,11 +91,11 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 	public HashSet<Actor> escolher(int k) {
 		HashSet<Actor> semente = new HashSet<Actor>();
 		HashSet<Actor> candidatos = new HashSet<Actor>();
-		spreadData = new double[k+1];
-		callData = new double[k+1];
+		spreadData = new double[k + 1];
+		callData = new double[k + 1];
 
 		candidatos = preSelecaoOriginal(grafo);
-//		System.out.println("|C| = "+candidatos.size());
+		System.out.println("|C| = " + candidatos.size());
 
 		if (candidatos.size() < k) {
 			System.out.println("Erro: o cojunto de candidatos é menor que K");
@@ -123,8 +120,7 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 				if (max.isValid() == true) {
 					semente.add(max.getVertice());
 					maxSpread = maxSpread + max.getGain();
-					System.out.println(semente.size()+"\t"+maxSpread);
-//					callData[semente.size()] = cont;
+//					System.out.println(semente.size() + "\t" + maxSpread);
 					spreadData[semente.size()] = maxSpread;
 					break;
 				} else {
@@ -137,70 +133,27 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 				}
 			}
 		}
-		System.out.println("chamadas: "+cont);
+		System.out.println("Chamadas: " + cont);
+		System.out.println("Chamadas depois da 1a iteracao: " + (cont - candidatos.size()));
 		return semente;
 	}
-	
-	public int callToSigma(){
+
+	public int callToSigma() {
 		return this.cont;
 	}
-	public double[] getSpreadData(){
+
+	public double[] getSpreadData() {
 		return this.spreadData;
 	}
-	
-	public double[] getCallData(){
-		return this.callData;
-	}
-	
-	public HashSet<Actor> toFile(int k) {
-		HashSet<Actor> semente = new HashSet<Actor>();
-		HashSet<Actor> candidatos = new HashSet<Actor>();
-		cont = 0;
-
-		candidatos = preSelecaoOriginal(grafo);
-//		System.out.println("|C| = "+candidatos.size());
-
-		if (candidatos.size() < k) {
-			System.out.println("Erro: o cojunto de candidatos é menor que K");
-			return null;
-		}
-
-		// create priority queue of all nodes, with marginal gain delta +inf
-		PriorityQueue<MarginalGain> fila = priorityQueueOfGains(candidatos);
-
-		double maxSpread = 0;
-
-		while (semente.size() < k) {
-			// set all gains invalid
-			for (MarginalGain mg : fila) {
-				mg.setValid(false);
-			}
 
-			while (true) {
-				MarginalGain max = fila.poll();
-				if (max.isValid() == true) {
-					semente.add(max.getVertice());
-					maxSpread = maxSpread + max.getGain();
-					System.out.println(semente.size()+"\t"+maxSpread);
-					break;
-				} else {
-					double sigma = cascata(max.getVertice(), semente);
-					double delta = sigma - maxSpread;
-					max.setGain(delta);
-					max.setValid(true);
-					fila.add(max);
-					cont++; // Conta o numero de chamadas à sigma
-				}
-			}
-		}
-		System.out.println("chamadas: "+cont);
-		return semente;
+	public double[] getCallData() {
+		return this.callData;
 	}
 
 	public HashSet<Actor> escolher2(int k) {
 		HashSet<Actor> semente = new HashSet<Actor>();
 		HashSet<Actor> minSet = new HashSet<Actor>();
-		cont=0;
+		cont = 0;
 
 		MinDominatingSet ds = new MinDominatingSet();
 		minSet = ds.fastGreedy2(grafo);
@@ -227,7 +180,7 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 				if (max.isValid() == true) {
 					semente.add(max.getVertice());
 					MaxSpread = MaxSpread + max.getGain();
-					System.out.println("|S| = "+semente.size()+", |A| = "+MaxSpread);
+					System.out.println("|S| = " + semente.size() + ", |A| = " + MaxSpread);
 					break;
 				} else {
 					double sigma = cascata(max.getVertice(), semente);
@@ -239,7 +192,7 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 				}
 			}
 		}
-		System.out.println("chamadas: "+cont);
+		System.out.println("chamadas: " + cont);
 		return semente;
 	}
 
@@ -313,35 +266,60 @@ public class PrevalentSeed implements SeedChooser<Actor> {
 	}
 
 	public static void main(String[] args) {
-		DirectedSocialNetwork g = new SocialNetworkGenerate().gerarGrafo(2000, 2.5);
-		System.out.println("|V(G)| = " + g.vertexSet().size());
-		long startTime = 0;
-		startTime = System.nanoTime();
-		HashSet<Actor> seed = new PrevalentSeed(g).escolher2(15);
-		System.out.println("Tempo: " + (System.nanoTime() - startTime) / 1000);
-
-		HashSet<Actor> ativos = g.indepCascadeDiffusion(seed);
-		
-		// System.out.println("|S| = " + seed.size());
-		System.out.println("|A| = " + ativos.size());
-		g.deactivate(ativos);
-		// g.activate(seed);
-		// g.visualize();
-
-		startTime = System.nanoTime();
-		HashSet<Actor> seed2 = new PrevalentSeed(g).escolher(15);
-		System.out.println("Tempo: " + (System.nanoTime() - startTime) / 1000);
-
-		HashSet<Actor> ativos2 = g.indepCascadeDiffusion(seed2);
-		// System.out.println("\n|S| = " + seed2.size());
-		System.out.println("|A| = " + ativos2.size());
-		g.deactivate(ativos2);
-
-		// HashSet<Actor> seed3 = new DominatingSeed(g).escolherRandom(15);
-		//
-		// HashSet<Actor> ativos3 = g.indepCascadeDiffusion(seed3);
-		//// System.out.println("\n|S| = " + seed3.size());
-		// System.out.println("|A| = "+ativos3.size());
+		/*
+		 * DirectedSocialNetwork g = new
+		 * SocialNetworkGenerate().gerarGrafo(2000, 2.5);
+		 * System.out.println("|V(G)| = " + g.vertexSet().size()); long
+		 * startTime = 0; startTime = System.nanoTime(); HashSet<Actor> seed =
+		 * new PrevalentSeed(g).escolher2(15); System.out.println("Tempo: " +
+		 * (System.nanoTime() - startTime) / 1000);
+		 * 
+		 * HashSet<Actor> ativos = g.indepCascadeDiffusion(seed);
+		 * 
+		 * // System.out.println("|S| = " + seed.size());
+		 * System.out.println("|A| = " + ativos.size()); g.deactivate(ativos);
+		 * // g.activate(seed); // g.visualize();
+		 * 
+		 * startTime = System.nanoTime(); HashSet<Actor> seed2 = new
+		 * PrevalentSeed(g).escolher(15); System.out.println("Tempo: " +
+		 * (System.nanoTime() - startTime) / 1000);
+		 * 
+		 * HashSet<Actor> ativos2 = g.indepCascadeDiffusion(seed2); //
+		 * System.out.println("\n|S| = " + seed2.size());
+		 * System.out.println("|A| = " + ativos2.size()); g.deactivate(ativos2);
+		 * 
+		 * // HashSet<Actor> seed3 = new DominatingSeed(g).escolherRandom(15);
+		 * // // HashSet<Actor> ativos3 = g.indepCascadeDiffusion(seed3); ////
+		 * System.out.println("\n|S| = " + seed3.size()); //
+		 * System.out.println("|A| = "+ativos3.size());
+		 */
+
+		DirectedSocialNetwork g;
+		PrevalentSeed ps = new PrevalentSeed(null);
+
+		System.out.println("enron.txt");
+		g = new GraphReader().enron();
+		System.out.println("|C| = " + ps.preSelecaoOriginal(g).size() + "\n");
+
+		System.out.println("epinions.txt");
+		g = new GraphReader().readEpinions();
+		System.out.println("|C| = " + ps.preSelecaoOriginal(g).size() + "\n");
+
+		System.out.println("dblp.txt");
+		g = new GraphReader().readDblp();
+		System.out.println("|C| = " + ps.preSelecaoOriginal(g).size() + "\n");
+
+		System.out.println("phy.txt");
+		g = new GraphReader().readPhy();
+		System.out.println("|C| = " + ps.preSelecaoOriginal(g).size() + "\n");
+
+		System.out.println("hep.txt");
+		g = new GraphReader().readHep();
+		System.out.println("|C| = " + ps.preSelecaoOriginal(g).size() + "\n");
+
+		System.out.println("amazon.txt");
+		g = new GraphReader().amazon();
+		System.out.println("|C| = " + ps.preSelecaoOriginal(g).size() + "\n");
 
 	}
 
diff --git a/src/grafos/DirectedSocialNetwork.java b/src/grafos/DirectedSocialNetwork.java
index 166a1a12dccc65ae339701de5d1b8af802b6cf59..b63e227ec2a59ecb95cd81cacf4983b18a402bcc 100644
--- a/src/grafos/DirectedSocialNetwork.java
+++ b/src/grafos/DirectedSocialNetwork.java
@@ -186,7 +186,7 @@ public class DirectedSocialNetwork extends
 	public double espectedSpread(HashSet<Actor> seed, boolean ic) {
 		double media = 0;
 		int soma = 0;
-		int repeticoes =100;
+		int repeticoes =500;
 
 		if (!ic) {
 			HashSet<Actor> ativados = linearThresholdDiffusion(seed);
diff --git a/src/plot/MeuPlot.java b/src/plot/MeuPlot.java
index 15eb0b02b7d4c58519036c295a0bde0a6d5182c1..6f8ec543d680d751eafc52dd0a8d15afbae86dc5 100644
--- a/src/plot/MeuPlot.java
+++ b/src/plot/MeuPlot.java
@@ -10,38 +10,38 @@ public class MeuPlot extends JGnuplot {
 //	String output = null;
 //	String beforeStyle="linewidth=4";
 	
-//	public void plotPropagacao(double[] x, double[] y1, double[] y2, double[] y3, double[] y4, String outDir){
-//		double[] x2 = suavisalinhas(x);
-//		double[] z1 = suavisalinhas(y1);
-//		double[] z2 = suavisalinhas(y2);
-//		double[] z3 = suavisalinhas(y3);
-//		double[] z4 = suavisalinhas(y4);
-//		
-//		JGnuplot plot = new JGnuplot();
-//		Plot plotPropagacao = new Plot("Propagação Esperada") {
-//			{
-//				xlabel = "'|S|'";
-//				ylabel = "'sigma(S)'";
-//				extra = "set key top left";
-//			}
-//		};
-//		
-//		DataTableSet dts = plotPropagacao.addNewDataTableSet("Propagação Esperada");
-//		dts.addNewDataTable("PrevalentSeed", x2, z1);
-//		dts.addNewDataTable("CELF", x2, z2);
-//		dts.addNewDataTable("HighDegree", x2, z3);
-//		dts.addNewDataTable("RandomSeed", x2, z4);
-//		
-//		plotPropagacao.add(dts);
-//		String saida = outDir+"propagacao_esperada.plt";
-//		plot.compile(plotPropagacao, plot.plot2d, saida);
-//		
-////		this.terminal = "epslatex color colortext dashed";
-////		this.output = outDir+"propagacao.tex'";
-//		this.terminal = "eps color dashed";
-//		this.output = outDir+"propagacao.eps";
-//		this.execute(plotPropagacao, this.plot2d);
-//	}
+	public void plotPropagacao(double[] x, double[] y1, double[] y2, double[] y3, double[] y4, String outDir){
+		double[] x2 = suavisalinhas(x);
+		double[] z1 = suavisalinhas(y1);
+		double[] z2 = suavisalinhas(y2);
+		double[] z3 = suavisalinhas(y3);
+		double[] z4 = suavisalinhas(y4);
+		
+		JGnuplot plot = new JGnuplot();
+		Plot plotPropagacao = new Plot("Propagação Esperada") {
+			{
+				xlabel = "'|S|'";
+				ylabel = "'sigma(S)'";
+				extra = "set key top left";
+			}
+		};
+		
+		DataTableSet dts = plotPropagacao.addNewDataTableSet("Propagação Esperada");
+		dts.addNewDataTable("PrevalentSeed", x2, z1);
+		dts.addNewDataTable("CELF", x2, z2);
+		dts.addNewDataTable("HighDegree", x2, z3);
+		dts.addNewDataTable("RandomSeed", x2, z4);
+		
+		plotPropagacao.add(dts);
+		String saida = outDir+"propagacao_esperada.plt";
+		plot.compile(plotPropagacao, plot.plot2d, saida);
+		
+//		this.terminal = "epslatex color colortext dashed";
+//		this.output = outDir+"propagacao.tex'";
+		this.terminal = "eps color dashed";
+		this.output = outDir+"propagacao.eps";
+		this.execute(plotPropagacao, this.plot2d);
+	}
 	
 	public void plotPropagacao(double[] x, double[] y1, double[] y2, String outDir){
 		double[] x2 = suavisalinhas(x);
diff --git a/src/readgraph/GraphReader.java b/src/readgraph/GraphReader.java
index d853657a429e59281d5de68aeb56bc2f013c186d..8b4c3e80e227825a912d4d5cbeddeba391fa86d9 100644
--- a/src/readgraph/GraphReader.java
+++ b/src/readgraph/GraphReader.java
@@ -87,9 +87,9 @@ public class GraphReader {
 
 		// uniform IC model
 //		return (double)10/100;
-//		return 0.001;
+//		return 0.025;
 //		return Math.random()/4;
-		return 0.0025;
+		return 0.001;
 	}
 
 	public DirectedSocialNetwork readEpinions() {
diff --git a/src/simulacao/Experimentacao.java b/src/simulacao/Experimentacao.java
index 8d3e0a32cb0f87f010ec1d3361fbd08f5d26fddf..4bbbbdeb41af451884bce43af05176be461e6b97 100644
--- a/src/simulacao/Experimentacao.java
+++ b/src/simulacao/Experimentacao.java
@@ -1,11 +1,5 @@
 package simulacao;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import org.jgrapht.graph.DefaultWeightedEdge;
-
 import algoritmos.HightDegree;
 import algoritmos.LazyGreedy;
 import algoritmos.PrevalentSeed;
@@ -18,19 +12,23 @@ import readgraph.GraphReader;
 public class Experimentacao {
 
 	public static void main(String[] args) {
-		int k = 50;
-//		sinteticGraphSimulate(k);		
+		int k = 30;
+		sinteticGraphSimulate(k);		
 		//Simulações a serem feita com probabilidade 0.01
-//		System.out.println("Simulaçoes realizadas para p = 0.025");
+		//System.out.println("Simulaçoes realizadas para p = 0.025");
 //		System.out.println("Grafos: HEP, PHY e DBLP");
+		//System.out.println("Grafos: AMAZON");
 //		simularHep(k);
-//		simularPhy(k);		
-//		simularDblp(k);
-// 		Simulações a serem feita com probabilidade 0.0025
-		System.out.println("Simulaçoes realizadas para p = 0.0025");
-		System.out.println("Grafos: ENRON e EPINIONS");
-		simularEnron(k);
-		simularEpinions(k);
+		//simularPhy(k);
+		//simularAmazon(k);
+		
+ 		//Simulações a serem feita com probabilidade 0.0025
+		//System.out.println("Simulaçoes realizadas para p = 0.0025");
+		//System.out.println("Grafos: ENRON e EPINIONS");
+		//System.out.println("Grafos: Epinions");
+		//simularEnron(k);
+		//simularEpinions(k);
+		//simularDblp(k); 
 	}
 	
 	private static void simularHep(int k) {
@@ -55,7 +53,6 @@ public class Experimentacao {
 
 		monteCarloSimulation(g, out, k);
 	}
-
 	private static void simularDblp(int k) {
 		System.out.println("dblp.txt");
 		DirectedSocialNetwork g;
@@ -158,7 +155,7 @@ public class Experimentacao {
 	private static void sinteticGraphSimulate(int k) {
 		int n = 2;
 
-		while (n <= 64) {
+		while (n <= 16) {
 			String out = "plots/rand/" + n + "/";
 			sinteticGraph(n, out, k);
 			System.out.println("\t----------");
@@ -168,7 +165,7 @@ public class Experimentacao {
 
 	/**
 	 * Faz um conjunto de simulações para grafos aleatórios de tamanho n e gera
-	 * grafos com os resultados da simulação
+	 * graficos com os resultados da simulação
 	 * 
 	 * @param n
 	 *            multiplo de 1000 para o tamanho dos grafos gerados
@@ -184,53 +181,56 @@ public class Experimentacao {
 		double[] spreadRS = new double[k + 1];
 		double[] mediaCelf = new double[k + 1], mediaPS = new double[k + 1], mediaHD = new double[k + 1],
 				mediaRS = new double[k + 1];
+		double timePS = 0, timeCelf = 0, timeHD = 0, timeRS = 0, time;
 		double[] x;
-		int numSimulacoes = 10;
+		int numSimulacoes = 4;
 
 		for (int i = 0; i < numSimulacoes; i++) {
-			DirectedSocialNetwork g = new SocialNetworkGenerate().gerarGrafo(n * 1000, 2.5);
+			DirectedSocialNetwork g = new SocialNetworkGenerate().gerarGrafo(n * 1000, 2);
 			System.out.println("\nGrafo n. " + (i + 1));
 			mostrarTamanho(g);
 
 			LazyGreedy celf = new LazyGreedy(g);
 			System.out.println("#Celf");
+			time = System.currentTimeMillis() * -1;
 			celf.escolher(k);
+			time += System.currentTimeMillis();
 			spreadCelf = somaVetores(spreadCelf, celf.getSpreadData());
-			// spreadCelf = celf.getSpreadData();
-			// sigmaCalls2 = celf.getCallData();
-			// for (int i = 0; i < spreadData2.length; i++) {
-			// System.out.println(i + "\t" + spreadData2[i]);
-			// }
+			timeCelf = timeCelf + (time / 1000.0f);
 
 			PrevalentSeed ps = new PrevalentSeed(g);
 			System.out.println("#PrevalentSeed");
+			time = System.currentTimeMillis() * -1;
 			ps.escolher(k);
+			time += System.currentTimeMillis();
 			spreadPS = somaVetores(spreadPS, ps.getSpreadData());
-			// sigmaCalls = ps.getCallData();
-			// for (int i = 0; i < spreadData1.length; i++) {
-			// System.out.println(i + "\t" + spreadData1[i]);
-			// }
+			timePS = timePS + (time / 1000.0f);
 
 			// Testa a heuristica de grau
 			HightDegree hd = new HightDegree(g);
 			System.out.println("#HightDegree");
+			time = System.currentTimeMillis() * -1;
 			hd.escolher(k);
+			time += System.currentTimeMillis();
 			spreadHD = somaVetores(spreadHD, hd.getSpreadData());
-			// for (int i = 0; i < spreadData3.length; i++) {
-			// System.out.println(i + "\t" + spreadData3[i]);
-			// }
-
+			timeHD = timeHD + (time / 1000.0f);
+			
 			// Testa a heurística semente aleatória
 			RandomSeed rs = new RandomSeed(g);
 			System.out.println("#RandomSeed");
+			time = System.currentTimeMillis() * -1;
 			rs.escolher(k);
+			time += System.currentTimeMillis();
 			spreadRS = somaVetores(spreadRS, rs.getSpreadData());
-			// for (int i = 0; i < spreadData4.length; i++) {
-			// System.out.println(i + "\t" + spreadData4[i]);
-			// }
+			timeRS = timeRS + (time / 1000.0f);
 		}
+		
+		System.out.println("Tempo Celf: "+timeCelf/numSimulacoes);
+		System.out.println("Tempo PrevalentSeed: "+timePS/numSimulacoes);
+		System.out.println("Tempo HighDegree: "+timeHD/numSimulacoes);
+		System.out.println("Tempo RandomSeed: "+timeRS/numSimulacoes);
 
-		// TODO tirar a média das 20 simulações e plotar a media
+		// tirar a média das 20 simulações e plotar a media
 		for (int i = 0; i < spreadPS.length; i++) {
 			mediaPS[i] = spreadPS[i] / numSimulacoes;
 			mediaCelf[i] = spreadCelf[i] / numSimulacoes;
@@ -240,7 +240,8 @@ public class Experimentacao {
 
 		x = eixox(k + 1); // preenche o vetor do eixo x
 		MeuPlot meuplot = new MeuPlot();
-//		meuplot.plotPropagacao(x, mediaPS, mediaCelf, mediaHD, mediaRS, out);
+		meuplot.plotPropagacao(x, mediaPS, mediaCelf, mediaHD, mediaRS, out);
+//		meuplot.plotPropagacao(x, mediaPS, mediaCelf, out);
 		// meuplot.plotChamadas(sigmaCalls, sigmaCalls2, "'");
 
 	}