Pagini recente » Cod sursa (job #2435150) | Cod sursa (job #1525189) | Cod sursa (job #841166) | Cod sursa (job #1279204) | Cod sursa (job #1533738)
#include <fstream>
#include <algorithm>
#include <iomanip>
using namespace std;
const int nmax = 260;
int n, m, gr[nmax];
double a[nmax][nmax], val[nmax];
int main()
{
ifstream fin ("tunel.in");
ofstream fout ("tunel.out");
ios_base::sync_with_stdio(false);
int i, j, x, y, c, k;
double t;
fin >> n >> m;
for (i=1; i<=m; i++)
{
fin >> x >> y >> c;
gr[x]++;
gr[y]++;
a[x][y]++;
a[y][x]++;
a[x][n+1]-=c;
a[y][n+1]-=c;
}
for(i=1; i<=n; i++)
for(j=1; j<=n+1; j++)
a[i][j]/=gr[i];
for(i=1; i<n; i++)
{
a[i][n]=0;
a[i][i]=-1;
}
for(j=1; j<n; j++)
{
for(i=j; i<=n; i++)
if (a[i][j]) break;
if (i!=j)
for (k=1; k<=n+1; k++)
swap(a[i][k], a[j][k]);
for(i=j+1; i<=n+1; i++)
a[j][i]/=a[j][j];
a[j][j]=1;
for(i=j+1; i<n; i++)
{
for(k=j+1; k<=n+1; k++)
a[i][k]-=a[i][j]*a[j][k];
a[i][j]=0;
}
}
for(i=n-1; i>0; i--)
for(j=1; j<=n+1; j++)
if (a[i][j])
{
val[j]=a[i][n+1];
for (k=j+1; k<=n; k++)
val[j]-=val[k]*a[i][k];
break;
}
fout << setprecision(4) << val[1];
fin.close();
fout.close();
return 0;
}