Pagini recente » Cod sursa (job #1022051) | Cod sursa (job #383611) | Istoria paginii runda/runda_de_verificare1 | Cod sursa (job #1584356) | Cod sursa (job #928754)
Cod sursa(job #928754)
#include <fstream>
#include<iostream>
#include<vector>
#include<string.h>
#define lmic 60000
#include<cstdlib>
using namespace std;
class graf{
private:
int n;
int m;
vector<int>v[lmic];
int *tata;
int *parcurs;
char *fin;
char *fout;
public:
graf(char*,char*);
~graf();
void df(int,ofstream &);
void tati();
void sp();
};
graf::graf(char*in,char*out){
tata=(int*)calloc(lmic,sizeof(int));
fin=new char[strlen(in)+1];
strcpy(fin,in);
fout=new char[strlen(out)+1];
strcpy(fout,out);
parcurs=(int*)calloc(lmic,sizeof(int));
}
graf::~graf(){
delete[] tata;
delete[] fin;
delete[] fout;
delete[] parcurs;
}
void graf:: df(int a,std::ofstream &g){
parcurs[a]=1;
cout<<a<<" ";
g<<a<<" ";
for(int i=0;i<v[a].size();i++)
if(parcurs[v[a][i]]==0)
df(v[a][i],g);
}
void graf:: tati(){
ofstream g(fout);
for(int i=1;i<=n;i++)
if(tata[i]==0)df(i,g);
}
void graf:: sp(){
ifstream f(fin);
int i,a,b;
f>>n;
f>>m;
for(i=1;i<=m;i++){
f>>a>>b;
v[a].push_back(b);
tata[b]=1;
}
tati();
}
int main()
{
graf A("sortare.in","sortare.out");
A.sp();
}