Pagini recente » Cod sursa (job #1337118) | Cod sursa (job #2880959) | Cod sursa (job #1954958) | Cod sursa (job #1168767) | Cod sursa (job #1052971)
#include<fstream>
#include<vector>
#include<queue>
#define maxn 30005
using namespace std;
ifstream fi("sate.in");
ofstream fo("sate.out");
vector <pair <int,int> > a[maxn];
queue <int> q;
int i,n,m,xa,ya,x,y,c;
bool viz[maxn];
int d[maxn];
void swap2(int &a,int &b){
int aux=a; a=b; b=aux;
}
int main(){
fi>>n>>m>>xa>>ya;
if(xa>ya) swap2(xa,ya);
for(i=1;i<=m;i++)
{
fi>>x>>y>>c;
a[x].push_back(make_pair(y,c));
a[y].push_back(make_pair(x,-c));
}
viz[xa]=1; q.push(xa); c=0;
while(viz[ya]==0 && q.size())
{
x=q.front();
while(a[x].size()){
y=a[x].back().first;
if(!viz[y])
{
viz[y]=1;
q.push(y);
d[y]=d[x]+a[x].back().second;
}
a[x].pop_back();
}
q.pop();
}
fo<<d[ya];
fi.close();
fo.close();
return 0;
}