Pagini recente » Cod sursa (job #2896001) | Cod sursa (job #95227) | Cod sursa (job #1677606) | Cod sursa (job #2774161) | Cod sursa (job #1857516)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
#define Infinit 10000
int n, m, i, k, j, a[10000][10000], viz[100], t[100], d[100], k1, l, o, u, dis, x[2001];
void dijkstra(int start)
{
int i, ok, min, k;
viz[start]=1;
for(i=1;i<=n;i++)
{
d[i]=a[start][i];
if(a[start][i]&&a[start][i]!=Infinit)
t[i]=start;
}
viz[start]=1;
ok=1;
while(ok)
{
min=Infinit;
for(i=1;i<=n;i++)
if(d[i]<min&&viz[i]==0)
{
min=d[i];
k=i;
}
if(min!=Infinit)
{
viz[k]=1;
for(i=1;i<=n;i++)
if(d[i]>d[k]+a[k][i])
{
d[i]=d[k]+a[k][i];
t[i]=k;
}
}
else
ok=0;
}
}
void drum(int h)
{
if(h!=0)
{
drum(t[h]);
g<<h<<" ";
}
}
int main()
{
f>>n>>m;
f>>k;
for(i=1;i<=k;i++)
f>>x[i];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
a[i][j]=Infinit;
for(i=1; i<=m; i++)
{
f>>u>>o>>dis;
a[u][o]=a[o][u]=dis;
}
dijkstra(1);
g<<d[n];
return 0;
}