Pagini recente » Cod sursa (job #1209003) | Cod sursa (job #97254) | Cod sursa (job #2506690) | Cod sursa (job #302481) | Cod sursa (job #729298)
Cod sursa(job #729298)
#include <fstream>
#include <vector>
#include <bitset>
#define pb push_back
using namespace std;
const int lg=400100;
int n,m,st,sf;
vector<int>a[lg],dis[lg];
bitset<lg>viz;
int c[lg],cost[lg];
ifstream f("sate.in");
ofstream g("sate.out");
void citire()
{
int i, x, y, d;
f>>n>>m>>st>>sf;
for(i=1;i<=m;i++)
{
f>>x>>y>>d;
a[x].pb(y);
a[y].pb(x);
dis[x].pb(d);
dis[y].pb(-d);
}
}
void bfs(int nod)
{
int li, ls, n_v,nod1,i;
li=1;
ls=1;
c[li]=nod;
cost[nod]=0;
while(li<=ls )//&& cost[sf]==0)
{
nod1=c[li];
n_v=a[nod1].size();
for(i=0;i<n_v;i++)
if(!viz[a[nod1][i]])
{
ls++;
c[ls]=a[nod1][i];
viz[a[nod1][i]]=1;
cost[a[nod1][i]]=cost[nod1]+dis[nod1][i];
}
li++;
}
}
int main()
{int i;
citire();
bfs(st);
//for(i=1;i<=n;i++)
//g<<cost[i]<<" ";
g<<cost[sf]<<"\n";
return 0;
}