Pagini recente » Clasament fefeqjowjcf | Cod sursa (job #895634) | Cod sursa (job #1465320) | Cod sursa (job #2109) | Cod sursa (job #11749)
Cod sursa(job #11749)
#include <stdio.h>
#include <string.h>
#define NMAX 40
typedef struct nod
{
char s[15];
};
nod nods[NMAX];
int nr;
int n;
char s[NMAX*2];
int a[NMAX][NMAX];
int numarartisti = 1;
void getnods(int trupa, int len, int count)
{
int i;
for(i = 0; i < nr; ++i)
{
if(!strcmp(s, nods[i].s))
{
a[trupa][count] = i;
return ;
}
}
memcpy(nods[nr].s, s, len*sizeof(char));
a[trupa][count] = nr++;
}
void read()
{
int i, j, count, k;
char c[NMAX*6];
scanf("%d\n", &n);
for(i = 0; i < n; ++i)
{
j = k = 0;
count = 1;
fgets(c, NMAX*5, stdin);
while(c[k] != '\n')
{
//scanf("%c", &c);
if(c[k] == ',')
{
s[j] = '\0';
getnods(i, j, count);
++count;
s[0] = '\0';
j = 0;
//++numarartisti;
++a[i][12];
}
else
{
s[j++] = c[k];
}
++k;
if(c[k] == '\n')
{
s[j] = '\0';
getnods(i, j, count);
++count;
s[0] = '\0';
j = 0;
//++numarartisti;
++a[i][12];
}
}
}
}
int numara()
{
int for1, for2, for3, for4, ok;
for(for1 = 0; for1 < n; ++for1)
{
if(a[for1][0] == 0)
a[for1][0] = numarartisti++;
for(for2 = for1+1; for2 < n; ++for2)
{
ok = 1;
for(for3 = 1; for3 <= a[for1][12] && ok; ++for3)
for(for4 = 1; for4 <= a[for2][12]; ++for4)
if(a[for1][for3] == a[for2][for4])
ok = 0;
if(!ok)
a[for2][0] = a[for1][0];
}
}
return numarartisti-1;
}
void print_a()
{
int i, j;
for(i = 0; i < NMAX; ++i)
{
for(j = 0; j < NMAX; ++j)
printf("%d ", a[i][j]);
printf("\n");
}
}
int main()
{
freopen("festival.in", "r", stdin);
freopen("festival.out", "w", stdout);
read();
printf("%d\n", numara());
print_a();
fclose(stdin);
fclose(stdout);
return 0;
}