Cod sursa(job #1289160)

Utilizator Mihai_BogdanDumitru Mihai Mihai_Bogdan Data 9 decembrie 2014 16:32:55
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,i,j,x,y,b[65537][2];
vector<int> a[4097];
vector<int>::iterator it1,it2,end1,end2;
long long nr;
int main()
{
    ifstream fin("triplete.in");
    ofstream fout("triplete.out");
    fin>>n>>m;
    for(i=1;i<=m;i++){
        fin>>x>>y;
        a[x].push_back(y);
        a[y].push_back(x);
        b[i][0]=x;b[i][1]=y;}
    for(i=1;i<=n;i++)
        sort(a[i].begin(),a[i].end());
    for(i=1;i<=m;i++){
        x=b[i][0];
        y=b[i][1];
        end1=a[x].end();
        it1=a[x].begin();
        end2=a[y].end();
        it2=a[y].begin();
        while(it1!=end1 && it2!=end2){
            if(it2!=end2)
                while(it1!=end1 && *it1 < *it2) it1++;
            if(it1!=end1)
                while(it2!=end2 && *it2 < *it1) it2++;
            if(it1!=end1 && it2!=end2)
                if(*it1==*it2) {nr++;it1++;it2++;}}}
    fout<<nr/3;
    fclose(stdout);
    return 0;}