Pagini recente » Cod sursa (job #2157095) | Cod sursa (job #2916865) | Cod sursa (job #2044176) | Cod sursa (job #2917068) | Cod sursa (job #1913052)
#include <cstdio>
#define inf 10000000
using namespace std;
int m,n,c[500][500],v[500],d[500];
int Opt1,Opt2;
void Read()
{
int aux1,aux2,cost;
freopen("ubuntzei.in","r",stdin);
scanf("%i %i %i",&n,&m,&Opt1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i == j)
c[i][j] = 0;
else
c[i][j] = inf;
}
}
for(int i=1;i<=m;i++)
{
scanf("%i %i %i",&aux1,&aux2,&cost);
c[aux1][aux2] = c[aux2][aux1] = cost;
}
}
void Pasul1(int x)
{
for(int i=1;i<=n;i++)
{
d[i] = c[x][i];
if(i == x)
v[i] = 1;
else
v[i] = 0;
}
}
int minim()
{
int loc = 0;
int min = inf;
for(int i=1;i<=n;i++)
{
if(v[i] == 0 && d[i] != inf)
{
if(d[i] < min)
{
min = d[i];
loc = i;
}
}
}
return loc;
}
void Pasul2()
{
int loc;
for(int i=2;i<=n-1;i++)
{
loc = minim();
v[loc] = 1;
for(int j=1;j<=n;j++)
{
if(d[j] > d[loc] + c[loc][j])
{
d[j] = d[loc] + c[loc][j];
}
}
}
}
int main()
{
Read();
Pasul1(1);
Pasul2();
freopen("ubuntzei.out","w",stdout);
printf("%i",d[n]);
return 0;
}