main() { int i,src,dst,nd[20],ttr=0;; clrscr(); freopen("topo.in","r",stdin); scanf("%d%d",&n,&e); for(i=0;i<=n;i++) { d[i]=f[i]=NIL; nd[i]=i; } EdgeInit(n); for(i=1;i<=e;i++) { scanf("%d%d",&src,&dst); InsertEdge(src,dst,NIL,i); } t=0; for(i=1;i<=n;i++) { if(d[i]==0) {ttr+=1;printf("\nTree-%d :: ",ttr);Topo(i);} } /* qsort((void *) (nd+1),n,sizeof(nd[0]),SortFunction); for(i=1;i<=n;i++) { printf("%d\n",*(nd+i)); }*/ fclose(stdin); printf("\nTotal tree=%d",ttr); printf("\nOK"); }
void Topo(int node) { int i,v; d[node]=++t; printf(" %d",node); i=NodeHead[node]; while(i!=NIL) { v=EdgeList[i].dst; if(d[v]==0) {Topo(v);} i=EdgeList[i].next; } f[node]=++t; }
void Topo(int node) { int i,v; static int j=0; d[node]=++t; cnd[j++]=node; i=NodeHead[node]; while(i!=NIL) { v=EdgeList[i].dst; if(d[v]==0) Topo(v); i=EdgeList[i].next; } f[node]=++t; }
int main(){ Pilha *posfixa = criaPilha(); Pilha *operadores = criaPilha(); Pilha *infixa = criaPilha(); char inf[MAX],letra,t; int testes,n,i,j,f=0; scanf("%d",&testes); while(testes > 0){ testes--; scanf("%s",&inf); n = strlen(inf); for(i = n-1;i>=0;i--){ Push(infixa,inf[i]); } while(!isEmpty(infixa)) { Pop(infixa,&letra); if(letra != '+' && letra != '-' && letra != '*' && letra != '/' && letra != '^' && letra != '(' && letra != ')'){ Push(posfixa,letra); }else if(letra == '('){ Push(operadores,letra); }else if(letra == ')'){ desempilha(posfixa,operadores); }else{ while(precedencia(Topo(operadores)) > precedencia(letra) || precedencia(Topo(operadores)) == precedencia(letra)){ Pop(operadores,&t); Push(posfixa,t); } Push(operadores,letra); } } if(!isEmpty(operadores)) { desempilha_op(posfixa,operadores); } exibe(posfixa); Empty(posfixa); Empty(operadores); }; return 0; }
calcir() { int a,b; for(a=1;a<=n;a++) for(b=1;b<=n;b++) } main() { int i,src,dst,nd[20]; clrscr(); freopen("dfs.in","r",stdin); scanf("%d%d",&n,&e); for(i=0;i<=n;i++) { d[i]=f[i]=NIL; nd[i]=i; } EdgeInit(n); for(i=1;i<=2*e;i+=2) { scanf("%d%d",&src,&dst); InsertEdge(src,dst,NIL,i); InsertEdge(dst,src,NIL,i+1); } t=0; for(i=1;i<=n;i++) { if(d[i]==0) Topo(i);calcir(); } qsort((void *) (nd+1),n,sizeof(nd[0]),SortFunction); for(i=1;i<=n;i++) { printf("%d\n",*(nd+i)); } fclose(stdin); printf("\nOK"); }