Cod sursa(job #1192351)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 28 mai 2014 21:26:46
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <bitset>
#include <vector>
#include <utility>
using namespace std;
vector<pair <int,int> > H;
vector <pair <int,int> >::iterator it;
bitset<4096>viz[4096];
char buffer[655360];
int main()
{   freopen("triplete.in","r",stdin);
    freopen("triplete.out","w",stdout);
    int n=0,m=0,i,j,x,y,sol=0;
    scanf("%d %d\n",&n,&m);
    fread(buffer,1000099,6553699,stdin);
    bitset<4096>v[n+1];
    bitset<4096>p;
    for(j=0;buffer[j]!=0;j++)
    {   x=0;
        for(;buffer[j]!=' ';j++) x=x*10+buffer[j]-'0';
        y=0;
        for(j++;buffer[j]!='\n';j++) y=y*10+buffer[j]-'0';
        v[x][y]=1;
        v[y][x]=1;
        if(!viz[x][y])
        {
            H.push_back(make_pair(x,y));
            viz[x][y]=viz[y][x]=1;
        }
    }
    for(it=H.begin();it!=H.end();it++)
    {   p=v[it->first]&v[it->second];
        sol=sol+p.count();
        v[it->first][it->second]=v[it->second][it->first]=0;
    }
    printf("%d",sol);
}