Cod sursa(job #169590)

Utilizator crawlerPuni Andrei Paul crawler Data 1 aprilie 2008 20:09:53
Problema PScNv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 kb
#include <cstdio>
#include <vector>
#include <bitset>
#include <cstdlib>
#include <algorithm>


using namespace std;

#define Nmax 250006

int g[Nmax];
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<g[nod];++i) 
     {
          if (v[y] == 1) return;
          if (v[l[nod][i].second] == 0 && l[nod][i].first <= K) DF(l[nod][i].second);     
     }
}

int main()
{
    freopen("pscnv.in","r",stdin);
    freopen("pscnv.out","w",stdout);

    pair<int,int> A,B;

    fread(buf,1,Dim,stdin); poz=0;
       
    n = cit(); m = cit(); y = cit(); x = cit();
   
    for (int i=1;i<=m;++i)
    {
        A.second = cit(); B.second = cit(); A.first = cit();
        ++g[A.second]; ++g[B.second];
    }
    
    for (int i=1;i<=n;++i) l[i] = (pair<int,int>*)malloc(sizeof(pair<int,int>)*g[i]), g[i] = 0;


    fclose(stdin);
    freopen("pscnv.in","r",stdin);

    fread(buf,1,Dim,stdin); poz=0;
       
    n = cit(); m = cit(); y = cit(); x = cit();
   
    for (int i=1;i<=m;++i)
    {
        A.second = cit(); B.second = cit(); A.first = B.first = cit();
        l[A.second][g[A.second]] = B; ++g[A.second];
        l[B.second][g[B.second]] = A; ++g[B.second];        
    }
    
    fclose(stdin);
    freopen("pscnv.in","r",stdin);
    
/*    
    int poz=1;
    
    for (int i=1;i<=n;++i) sort(l[i].begin(),l[i].end());
        
    #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;    
}