diff --git a/src/algoritmos/DominatingSeed.java b/src/algoritmos/DominatingSeed.java
index f7f7157f9501427954cdccc7b27dbbe32ba4685b..bf2bfb8611b3a9a015770a41ff2a0d83471ef046 100644
--- a/src/algoritmos/DominatingSeed.java
+++ b/src/algoritmos/DominatingSeed.java
@@ -184,7 +184,7 @@ public class DominatingSeed implements SeedChooser<Actor> {
 
 	public static void main(String[] args) {
 		DirectedSocialNetwork g = new SocialNetworkGenerate()
-				.gerarGrafo(600, 2.5);
+				.gerarGrafo(800, 2.5);
 		HashSet<Actor> seed = new DominatingSeed(g).escolherGreedy(15);
 		
 		 HashSet<Actor> ativos = g.indepCascadeDiffusion(seed);
diff --git a/src/grafos/DirectedSocialNetwork.java b/src/grafos/DirectedSocialNetwork.java
index 137d08cb8a0d6f01b559a11c6cd7d658763f6db2..ffcdeaa8729abf39bc0a2a6645958768108d9201 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 = 1000;
+		int repeticoes = 100;
 
 		if (!ic) {
 			HashSet<Actor> ativados = linearThresholdDiffusion(seed);
diff --git a/src/plot/MeuPlot.java b/src/plot/MeuPlot.java
index d1f55bf71a2aefd83e929a3103143324be2c35c5..2b01b902a5a3e5bfd94635ee71c3faf136f3d847 100644
--- a/src/plot/MeuPlot.java
+++ b/src/plot/MeuPlot.java
@@ -9,24 +9,25 @@ public class MeuPlot extends JGnuplot {
 	String output = null;
 	//String beforeStyle="linewidth=4";
 	
-	public void plotarPropagacaoEsperada(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, double[] y5){
+	public void plotPropagacao(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, String outDir){
 		JGnuplot plot = new JGnuplot();
 		Plot plotPropagacao = new Plot("Propagação Esperada") {
-			String xlabel = "'Tam. Semente'", ylabel = "'Propagacao Esperada'";
+			String xlabel = "'|S|'", ylabel = "'sigma(S)'";
+			String extra = "set key top left";
 		};
 		
-		DataTableSet dts = plotPropagacao.addNewDataTableSet("Propagacao");
-		dts.addNewDataTable("HighDegree", tamSemente, y1);
-		dts.addNewDataTable("BestNeighbors", tamSemente, y2);
-		dts.addNewDataTable("RandomSeed", tamSemente, y3);
-		dts.addNewDataTable("DominatingSeed", tamSemente, y4);
-		dts.addNewDataTable("CELF", tamSemente, y5);
+		DataTableSet dts = plotPropagacao.addNewDataTableSet("Propagação Esperada");
+		dts.addNewDataTable("DominatingSeed", tamSemente, y1);
+		dts.addNewDataTable("CELF", tamSemente, y2);
+		dts.addNewDataTable("HighDegree", tamSemente, y3);
+		dts.addNewDataTable("RandomSeed", tamSemente, y4);
 		
 		plotPropagacao.add(dts);
 		plot.compile(plotPropagacao, plot.plot2d, "propagacao_esperada.plt");
 		
-		this.terminal = "pngcairo enhanced dashed";
-		this.output = "'plots/IC/propagacao_esperada.png'";
+//		this.terminal = "epslatex color colortext dashed";
+		this.terminal = "eps color dashed";
+		this.output = outDir+"propagacao.eps'";
 		this.execute(plotPropagacao, this.plot2d);
 	}
 	
@@ -51,23 +52,24 @@ public class MeuPlot extends JGnuplot {
 		this.execute(plotPropagacao, this.plot2d);
 	}
 	
-	public void plotarTempoExecucao(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, double[] y5){
+	public void plotTempoExecucao(double[] tamSemente, double[] y1, double[] y2, double[] y3, double[] y4, String outDir){
 		JGnuplot plot = new JGnuplot();
 		Plot plotTempo = new Plot("Tempo de execução") {
-			String xlabel = "'Tam. Semente'", ylabel = "'Tempo de execução'";
+			String xlabel = "'|S|'", ylabel = "'Tempo de execução'";
+			String extra = "set key top left";
 		};		
 		
-		DataTableSet dts2 = plotTempo.addNewDataTableSet("TempoExecucao");
-		dts2.addNewDataTable("HighDegree", tamSemente, y1);
-		dts2.addNewDataTable("BestNeighbors", tamSemente, y2);
-		dts2.addNewDataTable("RandomSeed", tamSemente, y3);
-		dts2.addNewDataTable("DominatingSeed", tamSemente, y4);
-		dts2.addNewDataTable("CELF", tamSemente, y5);
+		DataTableSet dts2 = plotTempo.addNewDataTableSet("Tempo de execução");
+		dts2.addNewDataTable("DominatingSeed", tamSemente, y1);
+		dts2.addNewDataTable("CELF", tamSemente, y2);
+		dts2.addNewDataTable("HighDegree", tamSemente, y3);
+		dts2.addNewDataTable("RandomSeed", tamSemente, y4);
 		plotTempo.add(dts2);		
 		plot.compile(plotTempo, plot.plot2d, "tempo_execucao.plt");
 		
-		this.terminal = "pngcairo enhanced dashed";
-		this.output = "'plots/IC/tempo_execucao.png'";
+//		this.terminal = "epslatex color colortext dashed";
+		this.terminal = "eps color dashed";
+		this.output = outDir+"tempo.eps'";
 		this.execute(plotTempo, this.plot2d);
 	}
 	
diff --git a/src/simulacao/Simulacao.java b/src/simulacao/Simulacao.java
index 7d0e32feaf9e3bbd2a49fe7573e97fedc813f3a0..3e1e2575835d4b259fce5261b6cf7f00d9d6aed7 100644
--- a/src/simulacao/Simulacao.java
+++ b/src/simulacao/Simulacao.java
@@ -16,131 +16,112 @@ import grafos.Actor;
 import grafos.DirectedSocialNetwork;
 
 public class Simulacao {
-	
 
-	public void simularCascataIndependente(DirectedSocialNetwork g) {
-		double[] tamSemente = {10, 20, 30, 40, 50};
+	public void simularIC(DirectedSocialNetwork g, String outDir) {
+		double[] tamSemente = { 10, 20, 30, 40, 50 };
 		double[] sigma1 = new double[5], tempo1 = new double[5];
-		double[] sigma2 = new double[5], tempo2 = new double[5]; 
+		double[] sigma2 = new double[5], tempo2 = new double[5];
 		double[] sigma3 = new double[5], tempo3 = new double[5];
 		double[] sigma4 = new double[5], tempo4 = new double[5];
-		double[] sigma5 = new double[5], tempo5 = new double[5];
 		int k;
-		
-		long startTime = 0;		
+
+		long excutionTime = 0;
 		for (int i = 0; i < tamSemente.length; i++) {
 			k = (int) tamSemente[i];
-			System.out.println("\nTestando para k = "+k);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> seed1 = new HightDegree(g).escolher(k);
-			tempo1[i] = (System.nanoTime() - startTime)/1000;
-//			System.out.println("hDegreeTempo[i] = "+hDegreeTempo[i]);
+			System.out.println("\nTestando para k = " + k);
+
+			excutionTime = System.currentTimeMillis() * -1;
+			HashSet<Actor> seed1 = new DominatingSeed(g).escolher(k);
+			excutionTime += System.currentTimeMillis();
+			tempo1[i] = (excutionTime / 1000.0f);
 			sigma1[i] = g.espectedSpread(seed1, true);
-			System.out.println("sigma HighDegree = "+sigma1[i]);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> seed2 = new BestNeighbors(g).escolher(k);
-			tempo2[i] = (System.nanoTime() - startTime)/1000;
-//			System.out.println("bNeigTempo[i] = "+bNeigTempo[i]);
+			System.out.println("DominatingSeed: sigma  = " + sigma1[i]
+					+ ", tempo = " + tempo1[i] + " segundos");
+
+			excutionTime = System.currentTimeMillis() * -1;
+			HashSet<Actor> seed2 = new LazyGreedy(g).escolher(k);
+			excutionTime += System.currentTimeMillis();
+			tempo2[i] = (excutionTime / 1000.0f);
 			sigma2[i] = g.espectedSpread(seed2, true);
-			System.out.println("sigma BestNeighbors = "+sigma2[i]);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> seed3 = new RandomSeed(g).escolher(k);
-			tempo3[i] = (System.nanoTime() - startTime)/1000;
-//			System.out.println("rSeedTempo[i] = "+rSeedTempo[i]);
+			System.out.println("LazyGreedy: sigma = " + sigma2[i]
+					+ ", tempo = " + tempo2[i] + " segundos");
+
+			excutionTime = System.currentTimeMillis() * -1;
+			HashSet<Actor> seed3 = new DominatingSeed(g).escolherGreedy(k);
+			excutionTime += System.currentTimeMillis();
+			tempo3[i] = (excutionTime / 1000.0f);
 			sigma3[i] = g.espectedSpread(seed3, true);
-			System.out.println("sigma RandomSeed = "+sigma3[i]);
-			
-//			startTime = System.nanoTime();
-//			HashSet<Actor> dSeed = new DominatingSeed(g).escolher(k); // Provisóriamente====================
-//			dSeedTempo[i] = (System.nanoTime() - startTime)/1000;
-////			System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
-//			dSeedMedia[i] = g.espectedSpread(dSeed, true);
-//			System.out.println("sigma DominatingSeed = "+dSeedMedia[i]);
-			
-			/*startTime = System.nanoTime();
-			HashSet<Actor> oSeed = new OriginalGreedy(g).escolher(k);
-			dSeedTempo[i] = (System.nanoTime() - startTime)/1000;
-//			System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
-			dSeedMedia[i] = g.overageDiffusion(oSeed, true);*/
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> seed4 = new DominatingSeed(g).escolher(k);
-			tempo4[i] = (System.nanoTime() - startTime)/1000;
-//			System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
+			System.out.println("HighDegree: sigma = " + sigma3[i]
+					+ ", tempo = " + tempo3[i] + " segundos");
+
+			excutionTime = System.currentTimeMillis() * -1;
+			HashSet<Actor> seed4 = new RandomSeed(g).escolher(k);
+			excutionTime += System.currentTimeMillis();
+			tempo4[i] = (excutionTime / 1000.0f);
 			sigma4[i] = g.espectedSpread(seed4, true);
-			System.out.println("sigma DominatingSeed = "+sigma4[i]);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> celf = new LazyGreedy(g).escolher(k);
-			tempo5[i] = (System.nanoTime() - startTime)/1000;
-//			System.out.println("dSeedTempo[i] = "+dSeedTempo[i]);
-			sigma5[i] = g.espectedSpread(celf, true);
-			System.out.println("sigma LazyGreedy = "+sigma5[i]);
-			
-			
+			System.out.println("RandomSeed: sigma = " + sigma4[i]
+					+ ", tempo = " + tempo4[i] + " segundos");
+
 		}
-		
+
 		MeuPlot meuplot = new MeuPlot();
-		meuplot.plotarPropagacaoEsperada(tamSemente, sigma1, sigma2, sigma3, sigma4, sigma5);
-		meuplot.plotarTempoExecucao(tamSemente, tempo1, tempo2, tempo3, tempo4, tempo5);
+		meuplot.plotPropagacao(tamSemente, sigma1, sigma2, sigma3, sigma4,
+				outDir);
+		meuplot.plotTempoExecucao(tamSemente, tempo1, tempo2, tempo3, tempo4,
+				outDir);
 	}
 
-	public void simularLimitanteLinear(DirectedSocialNetwork g) {
-		double[] tamSemente = { 10, 20, 30, 40, 50 };
-		double[] rSeedMedia = new double[5], rSeedTempo = new double[5];
-		double[] hDegreeMedia = new double[5], hDegreeTempo = new double[5]; 
-		double[] bNeigMedia = new double[5], bNeigTempo = new double[5];
-		double[] dSeedMedia = new double[5], dSeedTempo = new double[5];
-		int k;
+	public static void main(String[] args) {
+//		simularArtificial();
+//		 simularHep();
+		 simularPhy();
+		// simularEpinions();
+	}
+
+	private static void simularArtificial() {
+		DirectedSocialNetwork g;
+		g = new SocialNetworkGenerate().gerarGrafo(300, 2.8);
+		System.out.println("|V(G)| = " + g.vertexSet().size());
+		System.out.println("|E(G)| = " + g.edgeSet().size());
+
+		String outDir = "'plots/tex/";
+
+		new Simulacao().simularIC(g, outDir);
 		
-		long startTime = 0;		
-		for (int i = 0; i < tamSemente.length; i++) {
-			k = (int) tamSemente[i];
-			System.out.println("\nTestando pra k = "+k);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> hDegree = new HightDegree(g).escolher(k);
-			hDegreeTempo[i] = (System.nanoTime() - startTime)/1000;
-			hDegreeMedia[i] = g.espectedSpread(hDegree, false);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> bNeig = new BestNeighbors(g).escolher(k);
-			bNeigTempo[i] = (System.nanoTime() - startTime)/1000;
-			bNeigMedia[i] = g.espectedSpread(bNeig, false);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> rSeed = new RandomSeed(g).escolher(k);
-			rSeedTempo[i] = (System.nanoTime() - startTime)/1000;
-			rSeedMedia[i] = g.espectedSpread(rSeed, false);
-			
-			startTime = System.nanoTime();
-			HashSet<Actor> dSeed = new DominatingSeed(g).escolher(k);
-			dSeedTempo[i] = (System.nanoTime() - startTime)/1000;
-			dSeedMedia[i] = g.espectedSpread(dSeed, false);
-			
-		}
+	}
+
+	private static void simularPhy() {
+		DirectedSocialNetwork g;
+		g = new GraphReader().readPhy();
+		System.out.println("|V(G)| = " + g.vertexSet().size());
+		System.out.println("|E(G)| = " + g.edgeSet().size());
 		
-		MeuPlot meuplot = new MeuPlot();
-		meuplot.plotarPropagacaoEsperadaLT(tamSemente, hDegreeMedia, bNeigMedia, rSeedMedia, dSeedMedia);
-		meuplot.plotarTempoExecucaoLT(tamSemente, hDegreeTempo, bNeigTempo, rSeedTempo, dSeedTempo);
+		String outDir = "'plots/phy/";
+
+		new Simulacao().simularIC(g, outDir);
 	}
 
-	public static void main(String[] args) {
+	private static void simularEpinions() {
 		DirectedSocialNetwork g;
-		g = new SocialNetworkGenerate().gerarGrafo(2500, 2.8);
-//		g = new GraphReader().readHep();
-//		g = new GraphReader().readPhy();
-//		g = new GraphReader().readEpinions();
+		g = new GraphReader().readEpinions();
+		
 		System.out.println("|V(G)| = " + g.vertexSet().size());
 		System.out.println("|E(G)| = " + g.edgeSet().size());
 		
-		Simulacao simula = new Simulacao();
-//		simula.simularLimitanteLinear(g);
-		simula.simularCascataIndependente(g);
+		String outDir = "'plots/epinions/";
+
+		new Simulacao().simularIC(g, outDir);
+	}
+
+	private static void simularHep() {
+		DirectedSocialNetwork g;
+		g = new GraphReader().readHep();
+		System.out.println("|V(G)| = " + g.vertexSet().size());
+		System.out.println("|E(G)| = " + g.edgeSet().size());
 		
+		String outDir = "'plots/hep/";
+
+		new Simulacao().simularIC(g, outDir);
 	}
 
 }