Pagini recente » Cod sursa (job #1371251) | Cod sursa (job #239280) | Cod sursa (job #1043207) | Cod sursa (job #973106) | Cod sursa (job #952400)
Cod sursa(job #952400)
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
long m;
int n;
int x[30000],y[30000];
int xx,yy;
long d[30000];
int *a[30000];
int q[30000];
int co[30000];
long *c[30000];
long dist[30000];
long t[30000];
long bfs(int x,int y)
{
int st=0,dr=0;
int t=0;
memset(dist,-1,sizeof(dist));
q[st]=x;
dist[x]=0;
while(st<=dr)
{
t=q[st++];
for(int i=1;i<=a[t][0];i++)
if(dist[a[t][i]]==-1)
{
q[++dr]=a[t][i];
dist[a[t][i]]=dist[t]+c[t][i];
if(a[t][i]==y)
return dist[a[t][i]];
}
}
return 0;
}
int main()
{
long i;
f>>n>>m>>xx>>yy;
for(i=0;i<m;i++)
{
f>>x[i]>>y[i]>>d[i];
co[x[i]]++;
co[y[i]]++;
}
for(i=1;i<=n;i++)
{
a[i]=new int[co[i]+1];
c[i]=new long[co[i]+1];
a[i][0]=0;
c[i][0]=0;
}
for(i=0;i<m;i++)
{
a[x[i]][++a[x[i]][0]]=y[i];
a[y[i]][++a[y[i]][0]]=x[i];
c[x[i]][++c[x[i]][0]]=d[i];
c[y[i]][++c[y[i]][0]]=-d[i];
}
g<<bfs(xx,yy);
return 0;
}