Pagini recente » Cod sursa (job #1054763) | Cod sursa (job #934396) | Cod sursa (job #343952) | Cod sursa (job #2875314) | Cod sursa (job #6934)
Cod sursa(job #6934)
#include<stdio.h>
FILE *fin,*fout;
#define inf 32000
#define dim 15001
int a[dim][dim],d[dim],viz[dim],prec[dim],i,j,min,v1,v2;
int rez[dim],k,n,m,x[dim],y[dim],v,c,p;
int main()
{
fin=fopen("radiatie.in","rt");
fout=fopen("radiatie.out","wt");
fscanf(fin,"%d %d %d",&n,&m,&k);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=inf;
for(i=1;i<=m;i++)
{
fscanf(fin,"%d %d %d",&v1,&v2,&c);
a[v1][v2]=a[v2][v1]=c;
if(a[v1][v2]==0)a[v1][v2]=a[v2][v1]=inf;
}
v1=k;
for(c=1;c<=v1;c++)
{
fscanf(fin,"%d %d",&x[c],&y[c]);
if(x[c]>y[c])
{
v2=x[c];
x[c]=y[c];
y[c]=v2;
}
}
for(c=1;c<=v1;c++)
if(rez[c]==0)
{
v=x[c];
for(i=1;i<=n;i++)
{
viz[i]=0;
prec[i]=0;
}
for(i=1;i<=n;i++)
{
d[i]=a[v][i];
prec[i]=v;
}
prec[v]=0;
viz[v]=1;
d[v]=0;
for(j=1;j<=n;j++)
{
min=inf;
for(i=1;i<=n;i++)
if(viz[i]==0)
if(min>d[i])
{
min=d[i];
k=i;
}
for(i=1;i<=n;i++)
if(viz[i]==0)
if(d[i]>a[k][i])
{
d[i]=a[k][i];
prec[i]=k;
}
viz[k]=1;
}
for(p=1;p<=v1;p++)
if(rez[p]==0 && x[c]==x[p])
{
i=y[p];
while(prec[i]!=0)
{
if(a[prec[i]][i]>rez[p])
rez[p]=a[prec[i]][i];
i=prec[i];
}
}
}
for(i=1;i<=v1;i++)
fprintf(fout,"%d\n",rez[i]);
fclose(fin);
fclose(fout);
return 0;
}