Pagini recente » Cod sursa (job #1601018) | Cod sursa (job #1913727) | Cod sursa (job #2466575) | Cod sursa (job #95649) | Cod sursa (job #1311450)
#include <cstdio>
#include <fstream>
#include <vector>
#include <cstring>
#define nmax 30005
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,prim,ultim,d;
vector <int> v[nmax];
int a[nmax],c[nmax*5],q;
char s[30];
void bfs()
{
int p,u,i;
a[prim]=0;
c[1]=prim;
p=1;u=1;
while (p<=u) {
q=c[p];
for (i=0;i<v[q].size();i+=2) {
if (a[q]+v[q][i+1]<a[v[q][i]]) {
a[v[q][i]]=a[q]+v[q][i+1];
c[++u]=v[q][i];
}
}
p++;
}
}
int main()
{
int i,j;
f>>n>>m>>prim>>ultim;
for (i=1;i<=n;i++) a[i]=1<<30;
for (i=1;i<=m;i++) {
f.getline(s,30);
j=0;
while (s[j]!=' ')
x=x*10+s[j++]-'0';
j++;
while (s[j]!=' ')
y=y*10+s[j++]-'0';
j++;
while (j<strlen(s))
d=d*10+s[j++]-'0';
memset(s,0,30);
f>>x>>y>>d;
v[x].push_back(y);
v[x].push_back(d);
v[y].push_back(x);
v[y].push_back(-d);
x=0;y=0;d=0;
}
bfs();
g<<a[ultim];
return 0;
}