Pagini recente » Borderou de evaluare (job #528065) | Cod sursa (job #3202622) | Borderou de evaluare (job #122007) | Cod sursa (job #2619369) | Cod sursa (job #892547)
Cod sursa(job #892547)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#define INF 2000000000
using namespace std;
struct NOD
{
int x,c;
};
vector <NOD>L[2010];
queue <int> q;
int n,m,d[2010][2010],loc[20],nloc;
inline void Read()
{
int i,x,y;
NOD aux;
ifstream f("ubuntzei.in");
f>>n>>m;
f>>nloc;
for(i=1;i<=nloc;i++)
f>>loc[i];
for(i=1;i<=m;i++)
{
f>>x>>y>>aux.c;
aux.x=y;
L[x].push_back(aux);
aux.x=x;
L[y].push_back(aux);
}
f.close();
}
inline void Initializare()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=INF;
}
inline void BellmanFord(int nod)
{
int i,x;
NOD aux;
d[nod][nod]=0;
q.push(nod);
while(!q.empty())
{
x=q.front();
q.pop();
for(i=0; i<L[x].size() ; i++)
{
aux=L[x][i];
if(d[nod][aux.x]>d[nod][x]+aux.c)
{
q.push(aux.x);
d[nod][aux.x]=d[nod][x]+aux.c;
}
}
}
}
inline void Solve()
{
ofstream g("ubuntzei.out");
Initializare();
if(nloc == 0)
{
BellmanFord(1);
g<<d[1][n]<<"\n";
}
g.close();
}
int main()
{
Read();
Solve();
return 0;
}