Pagini recente » Cod sursa (job #989987) | Cod sursa (job #2743476) | Cod sursa (job #996280) | Cod sursa (job #1736251) | Cod sursa (job #1400744)
#include<fstream>
#include<vector>
#include<stack>
using namespace std;
typedef int var;
ifstream fin("sate.in");
ofstream fout("sate.out");
#define MAXN 100002
struct Edge {
var n, c;
Edge(var a, var b) {
n = a;
c = b;
}
Edge(){}
};
var n;
var D[MAXN], DS[MAXN], I[MAXN];
bool VIZ[MAXN];
Edge *G[MAXN];
stack<var> ST;
void dfs(var node) {
stack<var> ST;
VIZ[node] = 1;
ST.push(node);
while(!ST.empty()) {
var node = ST.top();
ST.pop();
for(var i=0; i<D[node]; i++) {
auto &e = G[node][i];
if(!VIZ[e.n]) {
VIZ[e.n] = 1;
DS[e.n] = DS[node] + e.c;
ST.push(e.n);
}
}
}
}
int main() {
var m, i, j, a, b, c;
fin>>n>>m>>i>>j;
while(m--) {
fin>>a>>b>>c;
D[a]++;
D[b]++;
}
for(var i=1; i<=n; i++) {
G[i] = new Edge[D[i]];
}
fin.seekg(ios_base::beg);
fin>>n>>m>>i>>j;
while(m--) {
fin>>a>>b>>c;
G[a][I[a]++] = Edge(b, c);
G[b][I[b]++] = Edge(a, -c);
}
dfs(i);
fout<<DS[j];
return 0;
}