Cod sursa(job #1517159)

Utilizator Burbon13Burbon13 Burbon13 Data 3 noiembrie 2015 21:51:26
Problema Ciclu hamiltonian de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>

using namespace std;

const int nmx = 2000;

int C,n;
int X[1002],Y[1002];
char viz[nmx+5][nmx+5];

bool potrivire(int p1, int p2, char c){
    if(X[p1] == X[p2] || Y[p1] == Y[p2])
        return 0;
    if(viz[X[p1]][Y[p2]] == c && viz[X[p2]][Y[p1]] == c)
        return 1;
    return 0;
}

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

    scanf("%d %d", &n, &C);
    int x,y,sum = 0;
    char c;
    for(int i = 1; i <= n; ++i){
        scanf("%d %d %c", &x ,&y, &c);
        x += nmx;
        y += nmx;
        X[i] = x;
        Y[i] = y;
        viz[x][y] = c;
        for(int j = 1; j < i; ++j)
            if(viz[X[j]][Y[j]] == c && potrivire(i,j,c))
                ++ sum;
    }

    printf("%d\n", sum);

    return 0;
}