Pagini recente » Cod sursa (job #3211891) | Cod sursa (job #2276961) | Cod sursa (job #1242161) | Cod sursa (job #467573) | Cod sursa (job #1825513)
# include <iostream>
# include <fstream>
# include <valarray>
# include <vector>
# define EPS 1e-7
using namespace std;
# define MAX_N 255
valarray<double> eq[MAX_N];
vector<int> v[MAX_N];
int s[MAX_N];
inline bool null( const double &t )
{
return abs( t ) <= EPS;
}
int main()
{
ifstream fin( "tunel.in" );
ofstream fout( "tunel.out" );
int n, m, i, j, k, a, b, l;
fin >> n >> m;
for ( i = 0; i < m; i ++ ) {
fin >> a >> b >> l;
a --;
b --;
v[a].push_back( b );
v[b].push_back( a );
s[a] += l;
s[b] += l;
}
for ( i = 0; i < n - 1; i ++ ) {
eq[i].resize( n + 1 );
for ( int j : v[i] )
eq[i][j] = 1.0 / v[i].size();
eq[i][i] += -1;
eq[i][n] = 1.0 * s[i] / v[i].size();
}
for ( i = j = 0; i < n - 1 && j < n; j ++ ) {
if ( null( eq[i][j] ) ) {
k = i + 1;
while ( k < n - 1 && null( eq[k][j] ) )
k ++;
if ( k < n - 1 )
swap( eq[i], eq[k] );
}
if ( !null( eq[i][j] ) ) {
for ( k = 0; k < n - 1; k ++ )
if ( k != i )
eq[k] -= eq[i] * ( eq[k][j] / eq[i][j] );
i ++;
}
}
fout << -eq[0][n] / eq[0][0];
fin.close();
fout.close();
return 0;
}