Pagini recente » Cod sursa (job #782899) | Cod sursa (job #1991072) | Cod sursa (job #2078098) | Monitorul de evaluare | Cod sursa (job #1127250)
#include <fstream>
#include <cstring>
using namespace std;
FILE *f=fopen("text3.in","r");
FILE *g=fopen("text3.out","w");
int a[20011],b[20011],c[20011],d[20011],hel[30],hela[30];
struct cuv
{
char s[23];
int nr;
};
cuv x[20011];
int main()
{
char c1;
int n,i,j,ok;
n=0;
ok=0;
int jok;
do
{
++n;
jok=fscanf(f,"%s",&x[n].s);
a[n]=x[n].s[0]-'a';
b[n]=x[n].s[strlen(x[n].s)-1]-'a';
}
while(jok>0);
--n;
fprintf(g,"%d\n",n);
c[1]=0;
int max=0,ovariabila=0;
for(i=1; i<=n; ++i)
{
if(hel[a[i]]==0)
{
if(hel[b[i]]==0)
{
hel[b[i]]=1;
hela[b[i]]=i;
c[i]=hela[a[i]];
if(hel[b[i]]>max)
{
max=hel[b[i]];
ovariabila=i;
}
}
}
else if(hel[a[i]]>=hel[b[i]])
{
hel[b[i]]=hel[a[i]]+1;
hela[b[i]]=i;
c[i]=hela[a[i]];
if(hel[b[i]]>max)
{
max=hel[b[i]];
ovariabila=i;
}
}
/*if(a[i]==b[j])
if(c[i]<=c[j])
{
c[i]=c[j]+1;
d[i]=j;
}*/
}
int e;
fprintf(g,"%d",n-max);
i=max;
while(i>0)
{
d[i]=ovariabila;
ovariabila=c[ovariabila];
--i;
}
for(i=1;i<=max;++i)
fprintf(g,"\n%s",x[d[i]].s);
/*while(d[e]!=0)
{
a[i]=e;
--i;
e=d[e];
}
a[i]=e;
for(i=1; i<=max+1; ++i)
fprintf(g,"%s\n",x[a[i]].s);
*/
return 0;
}