Cod sursa(job #1807238)

Utilizator alin1999Buzatu Alin alin1999 Data 16 noiembrie 2016 11:15:39
Problema Patrate 3 Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
struct punct
{
    float a;
    int b,c;
}
punct[1000001];
int n,i,j,k,matr[1001][1001],prim,ultim,c[1001],varf,nr,patrate;
float x[1001],y[1001],d;
bool viz[1001],ok[1001],l;
void bfs()
{
    int k;
    while(prim<=ultim)
    {
        varf=c[prim];
        for(k=1;k<=n;k++)
            if(matr[varf][k]==1&&viz[k]==0)
        {
            ultim++;
            c[ultim]=k;
            viz[k]=1;
        }
        prim++;
    }
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>x[i]>>y[i];
    for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
            {d=sqrt((x[j]-x[i])*(x[j]-x[i])+(y[j]-y[i])*(y[j]-y[i]));
            punct[++k].a=d;punct[k].b=i;punct[k].c=j;}
        for(i=1;i<=k;i++)
            for(j=i+1;j<=k;j++)
            if(punct[i].a==punct[j].a)
        {
            matr[punct[i].b][punct[i].c]=matr[punct[i].c][punct[i].b]=1;
            matr[punct[j].b][punct[j].c]=matr[punct[j].c][punct[j].b]=1;
        }
 for(i=1;i<=n/2;i++)
 {nr=0;
     for(j=1;j<=n;j++)
        if(matr[i][j]==1)
        nr++;
     if(nr==2)
        patrate++;}
        fout<<patrate;
    return 0;
}