Pagini recente » Cod sursa (job #2692202) | Cod sursa (job #568870) | Cod sursa (job #2495033) | Cod sursa (job #403149) | Cod sursa (job #717671)
Cod sursa(job #717671)
#include<stdio.h>
FILE*f=fopen("flux.in","r");
FILE*g=fopen("flux.out","w");
int n,m;
double max,a[103][103],w[104];
struct muchii
{
int x,y,z;
}v[5002];
double intreg (double a)
{
if(a<0)
return -a;
return a;
}
int main()
{
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=m;++i)
{
fscanf(f,"%d%d%d",&v[i].x,&v[i].y,&v[i].z);
a[v[i].x][v[i].x]++;
a[v[i].x][v[i].y]--;
a[v[i].y][v[i].x]--;
a[v[i].y][v[i].y]++;
}
a[n][n+1]=1;
for(int i=2;i<=n;++i)
{
int t=i;
while(!a[t][i])
++t;
for(int ii=i;ii<=n+1;++ii)
{
double aux=a[i][ii];
a[i][ii]=a[t][ii];
a[t][ii]=aux;
}
for(int j=i+1;j<=n;++j)
{
double y=a[j][i]/a[i][i];
for(t=i;t<=n+1;++t)
a[j][t]-=y*a[i][t];
}
}
for(int i=n;i>1;--i)
{
for(int j=n;j>i;--j)
a[i][n+1]-=w[j]*a[i][j];
w[i]=a[i][n+1]/a[i][i];
}
max=2000000000;
for(int i=1;i<=m;++i)
if(intreg(v[i].z/(w[v[i].y]-w[v[i].x]))<max)
max=intreg(v[i].z/(w[v[i].y]-w[v[i].x]));
fprintf(g,"%lf",max);
fclose(f);
fclose(g);
return 0;
}