Cod sursa(job #986831)

Utilizator sleepaholicNeculaescu Theodor sleepaholic Data 19 august 2013 16:12:21
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("triplete.in");
ofstream g("triplete.out");
int n,m;
const int p1=9901,p2=11617,mod=13831;
vector <int> fr[5000];
vector<int> fr1[mod];
vector<int> fr2[mod];
void Add(int x,int y)
{ int lin=(x*p1+y*p2)%mod;
  fr1[lin].push_back(x);
  fr2[lin].push_back(y);
}
int Found(int x,int y)
{ int lin=(x*p1+y*p2)%mod,i;
  for(i=0;i<fr1[lin].size();i++)
    if (x==fr1[lin][i] && y==fr2[lin][i]) return 1;
return 0;
}

void Read()
{ int i,friend1,friend2;
   f>>n>>m;
   for(i=1;i<=m;i++)
   { f>>friend1>>friend2;
      if (friend1>friend2) swap(friend1,friend2);
     fr[friend1].push_back(friend2);
     Add(friend1,friend2);
   }
}
void Solve()
{ int i,j,k,f1,f2,sol=0;
  for(i=1;i<=n;i++)
  {
    for(j=0;j<fr[i].size();j++)
    for(k=j+1;k<fr[i].size();k++)
    { f1=fr[i][j]; f2=fr[i][k];
        if (f1>f2) swap(f1,f2);
       if (Found(f1,f2))  sol++;
    }
  }
g<<sol;
}
int main()
{ Read();
  Solve();
    return 0;
}