Pagini recente » Cod sursa (job #1236662) | Cod sursa (job #457303) | Cod sursa (job #2060622) | Cod sursa (job #1227787) | Cod sursa (job #669402)
Cod sursa(job #669402)
#include<fstream>
#define INF 9999999
using namespace std;
ofstream out("ubuntzei.out");
int a[2001][2001],T[2001],d[2001],n,m,k,drum[2001],oras[2001];
void read();
void drumm(int x);
int bellam(int start);
int main()
{
read();
bellam(1);
drumm(n);
return 0;
}
void read()
{
ifstream in("ubuntzei.in");
in>>n>>m;
in>>k;
for(int i=1;i<=k;i++)
in>>oras[i];
int x,y,c;
for(;m;m--)
{
in>>x>>y>>c;
a[x][y]=a[y][x]=c;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(a[i][j]==0&&i!=j)
a[i][j]=INF;
}
void drumm(int x)
{
int mm;
mm=0;
while(T[x])
{
drum[++mm]=x;
x=T[x];
}
drum[++mm]=x;
out<<mm;
out<<'\n';
}
int bellam(int start)
{
int i,j,k,ok;
for(int i=1;i<=n;i++)
{
d[i]=INF;
T[i]=-1;
}
d[start]=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
if(d[j]!=INF&&a[j][k]!=INF)
if(d[k]>d[j]+a[j][k])
{
d[k]=d[j]+a[j][k];
T[k]=j;
}
}
}