Cod sursa(job #573707)

Utilizator freak93Adrian Budau freak93 Data 6 aprilie 2011 15:20:48
Problema Tunelul groazei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>

using namespace std;

const char iname[] = "tunel.in";
const char oname[] = "tunel.out";

ifstream f(iname);
ofstream g(oname);

int main() {
	int N, M;
	f >> N >> M;                                                      
	vector< vector<double> > v(N, vector<double>(N + 1, 0));
	for (int i = 0; i < M; ++i) {
		int A, B;
		double C;
		f >> A >> B >> C;
		--A; --B;
		v[A][A] += 1; v[B][B] += 1;
		v[A][B] -= 1; v[B][A] -= 1;
		v[A][N] += C; v[B][N] += C;
	}
    v[N - 1] = vector<double>(N + 1, 0);
	v[N - 1][N - 1] = 1;

	g.setf(ios::fixed, ios::floatfield);
	g.precision(4);
	for (int i = 0; i < N; ++i)
		for (int j = 0; j < N; ++j)
			if (i != j)
				for (int k = N; k >= i; --k)
					v[j][k] -= v[j][i] / v[i][i] * v[i][k];
	g << v[0][N] / v[0][0] << "\n";
}