Pagini recente » Cod sursa (job #1893026) | Cod sursa (job #23460) | Cod sursa (job #3195019) | Cod sursa (job #2226933) | Cod sursa (job #445358)
Cod sursa(job #445358)
using namespace std;
#include<fstream>
#include<vector>
const int NMAX=30001;
int n,m,dist[NMAX];
short int coada[NMAX],xp,yp;
vector <short int> a[NMAX];
vector <int> d[NMAX];
ifstream in("sate.in");
ofstream out("sate.out");
void citire()
{
short int x1,y1;
int ds;
//freopen("sate.in","r",stdin);
//freopen("sate.out","w",stdout);
//scanf("%d%d%hd%hd", &n,&m,&xp,&yp);
in>>n>>m>>xp>>yp;
for(int i=1;i<=m;++i)
{
//scanf("%hd %hd %d", &x1,&y1, &ds);
in>>x1>>y1>>ds;
a[x1].push_back(y1);
a[y1].push_back(x1);
d[x1].push_back(ds);
d[y1].push_back(-ds);
}
}
void bfs()
{
int u=0,p=0,xi,yi;
dist[xp] = 1;
coada[u++]=xp;
while(u!=p)
{
xi=coada[p++];
for(int i=0;i<a[xi].size();++i)
{
yi=a[xi][i];
if(!dist[yi])
{
dist[yi]=dist[xi]+d[xi][i];
coada[u++]=yi;
}
if(yi==yp) return;
}
}
}
int main()
{
citire();
bfs();
//printf("%d",dist[yp] - 1);
out<<dist[yp] - 1;
return 0;
}