Cod sursa(job #1188815)

Utilizator breahnadavidBreahna David breahnadavid Data 20 mai 2014 17:09:45
Problema Sortare topologica Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.65 kb
#include<iostream>
#include<fstream>

using namespace std;

ifstream f;
ofstream g;

int i,j,m,n,k;

struct lista
        {
        int a;
        lista *next;
        }*prim,*p,*q,*z,*ultim;

int main()
{

f.open("sortaret.in");
g.open("sortaret.out");
f>>n;
f>>m;

prim=NULL;

f>>i>>j;
prim=new lista;
prim->a=i;
prim->next=NULL;
p=new lista;
p->a=j;
p->next=NULL;
prim->next=p;
m--;
while(m>0)
        {
        f>>i>>j;
        p=prim;
        while((p->next!=NULL)&&(i!=p->a)&&(j!=p->a))p=p->next;
        if(p->next==NULL&&i!=p->a&&j!=p->a){
                   q=new lista;
                   q->a=i;
                   q->next=NULL;
                   z=new lista;
                   z->a=j;
                   z->next=NULL;
                   q->next=z;
                   p->next=q;
                   }
        else
        if(i==p->a){
                   q=new lista;
                   q->a=j;
                   q->next=p->next;
                   p->next=q;
                   }
        else
        if(j==p->a){
                   q=new lista;
                   q->a=i;
                   q->next=NULL;
                   z=prim;
                   while(z->next->a!=j)z=z->next;
                   if(z!=prim){
                                q->next=z->next;
                                z->next=q;
                                }
                   else {
                         q->next=prim;
                         prim=q;
                        }
                    }


        m--;
        }

q=prim;
while (q!=NULL){g<<q->a<<' ';q=q->next;}
g.close();
return 0;
}