Pagini recente » Cod sursa (job #1499590) | Cod sursa (job #1222600) | Cod sursa (job #2735605)
#include<bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")
#pragma GCC optimize("Ofast")
#define eps 0.0001
using namespace std;
ifstream f("tunel.in");
ofstream g("tunel.out");
long double a[260][260],v[260];//v[x]=expected value de a ajunge de la x la n
//v[x]=sum(v[y]+cost[x][y])/nr_muchii
bool zero(long double x)
{
if(x<eps&&x>-eps)
return 1;
return 0;
}
int main()
{
int n,i,j,x,y,m,z;
f>>n>>m;
for(j=1;j<=m;j++)
{
f>>x>>y>>z;
a[x][y]--;
a[y][x]--;
a[x][n+1]+=z;
a[y][n+1]+=z;
a[x][x]++;
a[y][y]++;
}
x=1;
y=1;
while(x<=n&&y<=n)
{
for(i=x;i<=n;i++)
if(!zero(a[i][y]))
break;
if(i!=n+1)
{
if(i!=x)
swap(a[x],a[i]);
for(j=y+1;j<=n+1;j++)
a[x][j]/=a[x][y];
a[x][y]=1;
for(i=x+1;i<=n;i++)
{
for(j=y+1;j<=n+1;j++)
a[i][j]-=a[x][j]*a[i][y];
a[i][y]=0;
}
x++;
}
y++;
}
for(x=n;x>=1;x--)
{
for(y=1;y<=n+1;y++)
if(!zero(a[x][y]))
break;
v[y]=a[x][n+1];
for(j=y+1;j<=n;j++)
v[y]-=a[x][j]*v[j];
}
g<<fixed<<setprecision(5)<<v[1]<<" ";
return 0;
}