Pagini recente » Cod sursa (job #1089690) | Cod sursa (job #2488821) | Cod sursa (job #262882) | Cod sursa (job #2497182) | Cod sursa (job #494679)
Cod sursa(job #494679)
#include<fstream>
#include<vector>
#define MAX 30001
using namespace std;
int n,m,x,y,viz[MAX],km[MAX],l[MAX];
struct nod
{
int vec,cost;
};
vector<nod> a[MAX];
int bfs()
{
int prim=1,ultim=1,coada[4*MAX],i,ind;
coada[prim] = x;
viz[x] = 1;
while(prim <= ultim)
{
ind = coada[prim];
for(i=0;i<l[ind];++i)
{
if(!viz[a[ind][i].vec])
{
viz[a[ind][i].vec] = 1;
++ultim;
coada[ultim] = a[ind][i].vec;
km[coada[ultim]] = km[ind] + a[ind][i].cost;
}
}
++prim;
}
return km[y];
}
int main()
{
ifstream f("sate.in");
f>>n>>m>>x>>y;
int i,j,d,k;
nod aux;
for(k=1;k<=n;++k)
{
f>>i>>j>>d;
aux.vec = j;
aux.cost = d;
a[i].push_back(aux);
aux.vec = i;
aux.cost = -d;
a[j].push_back(aux);
}
f.close();
for(i=1;i<=n;++i)
l[i] = a[i].size();
ofstream g("sate.out");
g<<bfs();
g.close();
return 0;
}