Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<conio.h>
- #include<fstream>
- using namespace std;
- #define maxTask 20
- #define maxChild 19
- #define inf 0;
- class task{
- public:
- char TaskName[40];
- double duration;
- double StatrTime;
- int children[maxChild];
- bool visited;
- task(char*t,double d,double s){
- strcpy(TaskName,t);
- duration=d;
- StatrTime=inf;
- visited=false;
- for (int i=0;i<maxChild;i++){
- children[i]=-1;}
- }};
- class graph{
- public:
- task**g;
- graph(int n);
- void loadFile(char*FileName,int N);
- void AddTask(int Index,char* tn,double D,double S,int N);
- void AddEdge(int Indix,int Child,int N);
- task StartTask(int n);
- task EndTask();
- void printCB();
- };
- graph::graph(int n){
- g=new task*[n];}
- void graph::loadFile(char*filename,int N){
- ifstream file_in(filename,ios::in);
- int st=0;
- int y;
- file_in>>y;
- int index;
- double dur;
- char TN[40];
- for(int i=0;i<N;i++){
- file_in>>index;
- file_in>>TN;
- file_in>>dur;
- AddTask(index,TN,dur,st,N);}
- int e;
- int ch;
- file_in>>e;
- for(int j=0;j<e;j++){
- file_in>>index;
- file_in>>ch;
- AddEdge(index,ch,N);return;}}
- void graph::AddTask (int Index,char* tn,double D,double S,int N){
- g[Index]=new task(tn,D,S);return;}
- void graph::AddEdge(int Index,int Child,int N){
- for ( int k=0;k<(N-1);){
- if(g[Index]->children[k]==-1){
- g[Index]->children[k]=Child;
- g[Child]->visited=true;
- break;}
- else k++; }}
- task graph::StartTask (int n){
- for(int i=0;i<n;i++){
- if(!(g[i]->visited))
- return *g[i];}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement