Pagini recente » Cod sursa (job #2063512) | Cod sursa (job #652388) | Cod sursa (job #1558980) | Cod sursa (job #2309070) | Cod sursa (job #343252)
Cod sursa(job #343252)
#include<cstdio>
#define N 30001
#define M 100025
#include<vector>
using namespace std;
int n,m,x1,y1,d[N];
vector <int >a[N],a1[N];
bool b[N];
inline void parse(int &f,int &g,int &c)
{
f=g=c=0;
char s[1<<5],*p;
fgets(s,1<<5,stdin);
for(p=s;*p!=' ';++p)
f=f*10+(*p-'0');
++p;
for(;*p!=' ';++p)
g=g*10+(*p-'0');
++p;
for(;*p && *p!='\n';++p)
c=c*10+(*p-'0');
}
void citire()
{
freopen("sate.in","r",stdin);
freopen("sate.out","w",stdout);
scanf("%d%d%d%d\n",&n,&m,&x1,&y1);
int f,g,c;
for (int i=1; i<=m; ++i)
{
//scanf("%d%d%d",&f,&g,&c);
parse(f,g,c);
a[f].push_back(g);
a[g].push_back(f);
a1[f].push_back(c);
a1[g].push_back(-c);
}
}
void bfs()
{
int coada[N],u=0,p=0,x,y;
coada[u++]=x1;
b[x1]=true;
while (u!=p)
{
x=coada[p++];
int g=a[x].size();
for (int i=0; i<g; ++i)
{
y=a[x][i];
if (!b[y])
{
b[y]=true;
coada[u++]=y;
d[y]=a1[x][i]+d[x];
}
}
}
}
int main()
{
citire();
bfs();
printf("%d",d[y1]);
return 0;
}