Pagini recente » Cod sursa (job #1222026) | Cod sursa (job #2131796) | Cod sursa (job #398952) | Cod sursa (job #352011) | Cod sursa (job #1461109)
#include <iostream>
#include <fstream>
using namespace std;
#define nmax 50005
int m,n,k=0,check[nmax];
struct nod{
int info;
nod* next;
} *lista[nmax], *p;
void citeste(fstream&);
void df(int,fstream&);
int main()
{
fstream in("sortaret.in", ios::in);
fstream out("sortaret.out", ios::out);
int i,j,k;
citeste(in);
for(i=1;i<=n;i++)
{
cout<<i<<" - ";
p=lista[i];
while(p)
{
cout<<p->info<<" ";
p=p->next;
}
cout<<endl;
}
for(i=1;i<=n;i++)
df(i,out);
return 0;
}
void citeste(fstream& in)
{
int i,j;
in>>n>>m;
while(in>>i>>j)
{
p=new nod;
p->info=j;
if(!lista[i])
{
lista[i]=p;
p->next=0;
}
else if(lista[i]->info > p->info)
{
p->next=lista[i];
lista[i]=p;
}
else
{
nod *q=lista[i];
while(q->next!=0 && q->next->info<p->info && q->next->info != p->info)
q=q->next;
if(q->next== 0)
{
q->next=p;
p->next=0;
}
else if(q->next->info>p->info)
{
p->next=q->next;
q->next=p;
}
else
{
delete p;
}
}
}
}
void df(int node,fstream& out)
{
check[node]=1;
out<<node<<" ";
nod *q=lista[node];
while(q)
{
if(check[q->info]==0)
df(q->info,out);
q=q->next;
}
}