Pagini recente » Cod sursa (job #1688869) | Cod sursa (job #556323) | Cod sursa (job #2617537) | Cod sursa (job #1667237) | Cod sursa (job #1219574)
#include<cstdio>
#include<queue>
#include<vector>
#include<bitset>
using namespace std;
struct graf
{
short l;
int r;
};
vector<graf>v[30001];
queue<short>q;
int n,m,st,dr,x,y,c,i;
int d[30001];
bitset<30001>viz;
void bf(int nod)
{
viz[nod]=1;
q.push(nod);
int e=0;
while(!q.empty() && e==0)
{
int x=q.front();
q.pop();
vector<graf>::iterator it;
for(it=v[x].begin();it!=v[x].end();++it)
{
graf X=*it;
if (viz[X.l]==0)
{
d[X.l]=d[x]+X.r;
if (X.l==dr) {printf("%d\n",d[X.l]);e=1;break;}
q.push(X.l);
}
}
}
}
int main()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&st,&dr);
for (i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&c);
graf X;X.l=y;X.r=c;
v[x].push_back(X);
X.l=x,X.r=-c;
v[y].push_back(X);
}
bf(st);
return 0;
}