Cod sursa(job #1132919)

Utilizator Kira96Denis Mita Kira96 Data 4 martie 2014 08:19:52
Problema Componente biconexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
using namespace std;
void build()
{
	for(i=0;i<n;++i)
	{
		key[i]=s[i];
		sa[i]=i;
	}
	sort(sa,sa+n);
	for(k=1;k<n;k<<=1)
	{
		for(i=0;i<n;++i)
			if(!i||key[sa[i]]!=key[sa[i-1]])
				rank[sa[i]]=i;
			else
				rank[sa[i]]=rank[sa[i-1]];
		if(k>=n)
			return;
		for(i=0;i<n;++i)
			if(i+k<n)
				key[i]=1LL*rank[i]+rank[i+k]+1;
			else
				key[i]=1LL*rank[i];
		sort(sa,sa+n);
	}
	for(i=0,k=0;i<n;++i)
	{
		if(k)
			k--;
		if(rank[i]==n-1)
		{
			k=0;
			return ;
		}
		j=sa[rank[i]+1];
		while(s[i+k]==s[j+k]) k++;
		lcp[rank[i]]=k;
	}
}
int
int main ()
{
	while(1)
	{
		f>>s;
		if(s[0]=='.')
			return 0;
		n=strlen(s);
		build();
		com=0;
		for(i=sa[rank[0]+1];i;i=sa[rank[i]+1])
		{
			com=