Pagini recente » Cod sursa (job #2953848) | Cod sursa (job #2171249) | Cod sursa (job #2121447) | Cod sursa (job #632110) | Cod sursa (job #93405)
Cod sursa(job #93405)
using namespace std;
#include <cstdio>
#include <vector>
#include <string>
#define pb push_back
int d[30001], n;
struct nod { unsigned int n:16, c:25; nod(){}; nod(int a, int b){n=a; c=b;};}__attribute__ ((packed));
vector<nod> a[30001];
int source, sink;
void read()
{
int m, p, q, c;
freopen("sate.in","r",stdin);
scanf("%d %d %d %d\n", &n, &m, &source, &sink);
++m;
while(m--)
{
scanf("%d %d %d\n", &p, &q, &c);
a[p].pb(nod(q,c));
a[q].pb(nod(p,c));
}
}
void solve()
{
int Q[30001], p=1, q=1, u;
bool use[30001];
memset(use, 0, sizeof(use));
use[source]=1;
Q[1]=source;
vector<nod>::iterator it;
while(p<=q)
{
u=Q[p++];
for(it=a[u].begin();it!=a[u].end();++it)
if(!use[it->n])
{
Q[++q]=it->n;
if(u>it->n) d[it->n]=d[u]-it->c;
else d[it->n]=d[u]+it->c;
use[it->n]=1;
}
}
freopen("sate.out","w",stdout);
printf("%d\n", d[sink]);
}
int main()
{
read();
solve();
return 0;
}