Pagini recente » Cod sursa (job #53960) | Monitorul de evaluare | Cod sursa (job #637682) | Cod sursa (job #2788679) | Cod sursa (job #1398366)
#include<fstream>
#include<vector>
#include<queue>
#define INF 9999999
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
struct muc
{
int x;
int c;
}s;
queue <int> p;
vector <muc> l[30005];
int n,m,x,y,i,j,d[30005],z,viz[30005];
vector <muc> q;
void merg(int x ,int y)
{
p.push(x);
int ok=0;
viz[x]=1;
while(!p.empty())
{
int k=p.front();
viz[k]=1;
if(k==y)
ok=1;
if(ok==0)
for(int i=0;i<l[k].size();i++)
if(viz[l[k][i].x]==0)
if(d[l[k][i].x]>d[k]+l[k][i].c)
{
d[l[k][i].x]=d[k]+l[k][i].c;
p.push(l[k][i].x);
}
p.pop();
}
}
int main()
{
f>>n>>m>>x>>y;
for(i=1;i<=m;i++)
{
int a,b;
f>>a>>b>>s.c;
s.x=b;
l[a].push_back(s);
s.x=a;
s.c=s.c*-1;
l[b].push_back(s);
s.c=s.c*-1;
}
for(i=1;i<=n;i++)
d[i]=INF;
d[x]=0;
merg(x,y);
z=d[y];
g<<z;
return 0;
}