Pagini recente » Profil Vali_Deaconu | Cod sursa (job #445112) | Cod sursa (job #3150898) | Statistici Chesa Matei (berindei) | Cod sursa (job #169544)
Cod sursa(job #169544)
#include <cstdio>
#include <vector>
#include <bitset>
#include <algorithm>
using namespace std;
#define Nmax 250006
vector < pair<int,int> > l[Nmax];
bitset <Nmax> v;
int n,m,K,x,y;
#define Dim 10000
int poz=0;
char buf[Dim];
inline int cit()
{
int ret=0;
while (buf[poz] < 48) if (++poz == Dim) fread(buf,1,Dim,stdin), poz=0;
while (buf[poz] > 47)
{
ret = ret*10+buf[poz]-48;
if (++poz == Dim) fread(buf,1,Dim,stdin), poz=0;
}
return ret;
}
void DF(int nod)
{
v[nod] = 1;
for (unsigned int i=0;i<l[nod].size();++i)
if(v[l[nod][i].first] == 0 && l[nod][i].second <= K) DF(l[nod][i].first);
}
int main()
{
freopen("pscnv.in","r",stdin);
freopen("pscnv.out","w",stdout);
fread(buf,1,Dim,stdin); poz=0;
n = cit(); m = cit(); x = cit(); y = cit();
int A,B,C;
for (int i=1;i<=m;++i)
{
A = cit(); B = cit(); C = cit();
l[A].push_back(make_pair(B,C));
l[B].push_back(make_pair(A,C));
}
int poz=1;
#define Q(XXX) K+=XXX; v=0; DF(x); if (!v[y]) poz+=XXX; else K-= XXX;
Q(512) Q(256) Q(128) Q(64) Q(32) Q(16) Q(8) Q(4) Q(2) Q(1)
printf("%d\n", poz);
return 0;
}