Pagini recente » Cod sursa (job #102557) | Cod sursa (job #504579) | Cod sursa (job #2836675) | Cod sursa (job #419880)
Cod sursa(job #419880)
#include<stdio.h>
#include<vector>
#define mp make_pair
#define pb push_back
#define f first
#define s second
using namespace std;
int n,m,g[260];
vector< pair<int,int> > v[260];
double sol[260][260];
int main()
{
freopen("tunel.in","r",stdin);
freopen("tunel.out","w",stdout);
scanf("%d%d",&n,&m);
int i,j,k,x,y,z,lim;
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
v[x].pb(mp(y,z));
g[x]++;
v[y].pb(mp(x,z));
g[y]++;
}
for(i=1;i<n;i++)
{
lim=v[i].size();
for(j=0;j<lim;j++)
{
sol[i][v[i][j].f]+=1/(double)g[i];
sol[i][0]+=v[i][j].s/(double)g[i];
}
}
double a,b;
for(i=2;i<n;i++)
{
a=1/(1-sol[i][i]);
for(j=0;j<n;j++)
sol[i][j]*=a;
sol[i][i]=0;
for(j=1;j<n;j++)
{
b=sol[j][i];
for(k=0;k<n;k++)
sol[j][k]+=sol[i][k]*b;
sol[j][i]=0;
}
}
printf("%lf",sol[1][0]/(1-sol[1][1]));
return 0;
}