Pagini recente » Cod sursa (job #1665749) | Cod sursa (job #2361480) | Cod sursa (job #2133645) | Cod sursa (job #1258483) | Cod sursa (job #456049)
Cod sursa(job #456049)
#include<fstream>
#include<vector>
#include<queue>
#define dmax 30005
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
int n,m,s,f,ok;
bool t[dmax];
struct drum
{ int v;
long long c;
};
vector<struct drum>g[dmax];
vector<struct drum>::iterator it;
queue<struct drum>q;
void bfs()
{ int i;
drum crt,w;
w.v=s;
w.c=0;
q.push(w);
t[s]=1;
ok=1;
while(!q.empty() && ok)
{ crt=q.front();
q.pop();
if(crt.v==f)
{ out<<crt.c;
ok=0;
}
for(it=g[crt.v].begin();it<g[crt.v].end();it++)
if(!t[it->v])
{ w.v=it->v;
if(it->v > crt.v)
w.c=crt.c+it->c;
else w.c=crt.c-it->c;
q.push(w);
}
}
}
int main()
{ long long i,a,b,ct;
drum z;
in>>n>>m>>s>>f;
if(s>f)
{ i=f;
f=s;
s=i;
}
for(i=1;i<=m;i++)
{ in>>a>>b>>ct;
z.v=b;
z.c=ct;
g[a].push_back(z);
z.v=a;
g[b].push_back(z);
}
in.close();
bfs();
in.close();
return 0;
}