Pagini recente » Cod sursa (job #1322902) | Cod sursa (job #2159504) | Cod sursa (job #193152) | Cod sursa (job #1690186) | Cod sursa (job #405817)
Cod sursa(job #405817)
#include <fstream>
using namespace std;
ofstream ofis("sate.out");
ifstream ifis("sate.in");
int n,m,u,t,x,d,y,i,viz[34221],c[32543],a[34211][67],dist[34211][67];
void bfs(int);
void afisare_cost();
int main()
{
ifis>>n>>m>>x>>y;
for (i=1; i<=m; i++)
{
ifis>>u>>t>>d;
a[u][++a[u][0]]=t;
a[t][++a[t][0]]=u;
dist[u][t]=d;
dist[t][u]=d;
}
bfs(x);
afisare_cost();
return 0;
}
void bfs(int x)
{
int i,prim,ultim;
prim=ultim=0;
viz[x]=-1;
c[0]=x;
while (prim<=ultim && !viz[y])
{
x=c[prim++];
for (i=1; i<=a[x][0]; i++)
if (!viz[a[x][i]])
{
viz[a[x][i]]=x;
c[++ultim]=a[x][i];
}
}
}
void afisare_cost()
{
int j=0,cost=0;
for (i=0; i<=n; i++)
c[i]=0;
c[0]=y;
while (viz[c[j]]!=-1)
c[++j]=viz[c[j-1]];
for (i=1; i<=j; i++)
if (c[i-1]>c[i]) cost+=dist[c[i]][c[i-1]];
else cost-=dist[c[i]][c[i-1]];
ofis<<cost;
}