Pagini recente » Cod sursa (job #2987937) | Cod sursa (job #1085927) | Cod sursa (job #864506) | Cod sursa (job #1555657) | Cod sursa (job #1415527)
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int MAX=5000,s[100],d[100],p[100];
int main()
{
int p1,q1,w1,n,m,x1,y1,min,y,j,a[400][400];
FILE *input=fopen("sate.in","r");
fscanf(input,"%d",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)
a[i][j]=0;
else
a[i][j]=MAX;
}
}
fscanf(input,"%d",&m);
fscanf(input,"%d%d",&x1,&y1);
for(int j=0;j<m;j++)
{
fscanf(input,"%d %d %d",&p1,&q1,&w1);
a[p1][q1]=w1;
a[q1][p1]=-w1;
}
s[x1]=1;
for(int i=1;i<=n;i++)
{
d[i]=a[x1][i];
if((i!=x1)&&(d[i]<MAX))
{
p[i]=x1;
}
}
for(int i=1;i<=n;i++)
{
for(j=1,min=MAX;j<=n;j++)
if((s[j]==0)&&(d[j]<min))
{
min=d[j];
y=j;
}
s[y]=1;
for(int j=1;j<=n;j++)
{
if((s[j]==0)&&(d[j]>d[y]+a[y][j]))
{
d[j]=d[y]+a[y][j];
p[j]=y;
}
}
}
if(p[y1]!=0)
printf("\nDrumul de la %d la %d costa %d.",x1,y1,d[y1]);
else
printf("Nu exista drum de la %d la %d !\n",x1,y1);
system("PAUSE");
}