Pagini recente » Cod sursa (job #688338) | Cod sursa (job #2657520) | Cod sursa (job #1136677) | Cod sursa (job #1911597) | Cod sursa (job #1412576)
#include <fstream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
const int NMAX=256;
vector<pair<int, int> > g[NMAX];
int x, y, c, n, m;
double coef, a[NMAX][NMAX], sol[NMAX];
void gauss()
{
double x;
int i;
for(int j=1; j<=n; ++j)
{
for(i=j; i<=n; ++i)
if(a[i][j])
break;
for(int k=1; k<=n; ++k)
swap(a[i][k], a[j][k]);
swap(sol[i], sol[j]);
for(i=1; i<=n; ++i)
if(i!=j)
{
x=a[i][j]/a[j][j];
for(int k=1; k<=n; ++k)
a[i][k]-=x*a[j][k];
sol[i]-=x*sol[j];
}
}
}
int main()
{
ifstream in("tunel.in");
ofstream out("tunel.out");
in>>n>>m;
for(int i=1; i<=m; ++i)
{
in>>x>>y>>c;
g[x].push_back(make_pair(y, c));
g[y].push_back(make_pair(x, c));
}
for(int i=1; i<n; ++i)
{
a[i][i]=1;
coef=(double)1/g[i].size();
for(int j=0; j<g[i].size(); ++j)
{
a[i][g[i][j].first]-=coef;
sol[i]+=coef*g[i][j].second;
}
}
a[n][n]=1;
gauss();
out<<setprecision(4)<<fixed<<sol[1]/a[1][1];
return 0;
}