Pagini recente » Cod sursa (job #2852503) | Cod sursa (job #154005) | Cod sursa (job #250028) | Cod sursa (job #2681326) | Cod sursa (job #669145)
Cod sursa(job #669145)
#include <fstream>
#include <vector>
#include <queue>
#define lim 30005
using namespace std;
const char InFile[]="sate.in";
const char OutFile[]="sate.out";
ifstream fin(InFile);
ofstream fout(OutFile);
struct cod{int dest,cost;};
vector<cod> v[lim];
cod s;
int n,m,x,y,a,b,cost;
int viz[lim];
void bfs(int nod){
viz[nod]=1;
queue<int> q;
q.push(nod);
while(!q.empty())
{
nod=q.front();
q.pop();
for( int i=0;i<(int)v[nod].size();++i)
{
if(!viz[v[nod][i].dest])
{
viz[v[nod][i].dest]=viz[nod]+v[nod][i].cost;
q.push(v[nod][i].dest);
}
}
}
}
int main()
{
fin>>n>>m>>x>>y;
for( int i=0;i<m;++i)
{
fin>>a>>b>>cost;
if(a>b){
int aux=a;
a=b;
b=aux;
}
s.cost=cost;
s.dest=b;
v[a].push_back(s);
s.cost=-cost;
s.dest=a;
v[b].push_back(s);
}
bfs(x);
fout<<viz[y]-1;
fin.close();
fout.close();
return 0;
}