Pagini recente » Cod sursa (job #931709) | Cod sursa (job #2174797) | Cod sursa (job #997977) | Cod sursa (job #1425397) | Cod sursa (job #1518007)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
using namespace std;
#define maxd 30010
ifstream fin("sate.in");
ofstream fout("sate.out");
int n, m, x, y, u, v, dist, t;
vector <int> a[maxd];
vector <int> d[maxd];
queue <int> c;
int lg[maxd];
bitset <maxd> viz;
char cp[30]; //citire parsata
int main(){
fin>>n>>m>>x>>y;
fin.get();
for(;m;--m){
u=v=dist=0;
int k=0;
fin.getline(cp, 25);
while(cp[k]!=' '){
u=u*10+(cp[k]-'0');
k++;
}
k++;
while(cp[k]!=' '){
v=v*10+(cp[k]-'0');
k++;
}
k++;
while(cp[k]!=0){
dist=dist*10+(cp[k]-'0');
k++;
}
a[u].push_back(v);
a[v].push_back(u);
d[u].push_back(dist);
d[v].push_back(-dist);
}
c.push(x);
viz[x]=true;
int ok=1;
while(c.size() && ok){
t=c.front();
c.pop();
if(t==y) ok=0;
for(int i=0;i<a[t].size();++i){
int g=a[t][i];
if(!viz[g]){
viz[g]=true;
lg[g]=lg[t]+d[t][i];
c.push(g);
}
}
}
fout<<lg[y];
return 0;
}