thegoodfellas/blogset-br huggingface dataset:
representando as precedencias entre as"); printf("\n tarefas. As tarefas devem ser numeros inteiros de zero a "); printf("\n %d e os pares devem relacionar tarefas ", quantidadeDeTarefas-1); printf("\"vizinhas\", ou seja,\n se A antecede B que antecede C, entre"); printf(" com os pares \n A B\n e\n B C\n e nao entre com o par"); printf(" implicito A C.\n\n "); /* agora leremos os pares da entrada padrao e montaremos as listas */ for(i = 0; i < quantidadeDePares; i++) { scanf("%d %d", &umaTarefa, &outraTarefa); /* Esta entrada quer nos dizer que umaTarefa precede outraTarefa */ /* Entao insiro outraTarefa na lista de sucessores de umaTarefa */ insereNaLista(outraTarefa, sucessores[umaTarefa]); /* E incremento o numero de antecessores de outraTarefa */ antecessores[outraTarefa]++; printf(" "); } printf("\n >>> Uma ordem possivel: "); /* Agora vamos descobrir a resposta. * Para isso varremos uma vez o vetor "antecessores" e guardamos na lista * de saida todas as tarefas que ja podem ser executadas. Depois, para cada * tarefa na lista de saida, imprimimos seu valor (ou seja, mandamos * o usuario executar tal tarefa) e varremos sua lista de sucessores * decrementado deles em uma unidade o numero de antecessores pendentes. Se * nesse decremento ja encontrarmos um zero, colocamos a tarefa * correspondente na fila de saida. */ /* coloca na fila de saida quem nao tem pre-requisito */ for(i = 0; i < quantidadeDeTarefas; i++) { if(antecessores[i] == 0) insereNaFila(i, filaDeSaida); } valorDoProxDaFila = proximoDaFila(filaDeSaida); while(valorDoProxDaFila != -1) { /* varremos a lista de sucessores da tarefa (varre->chave) e decrementaremos o numero de antecessores deles e ja adicionando-os na fila de saida se for o caso */ varreSucessores = sucessores[valorDoProxDaFila]->prox; printf("%d ", valorDoProxDaFila); while(varreSucessores != NULL) { antecessores[varreSucessores->chave]--; if(antecessores[varreSucessores->chave] == 0) insereNaFila(varreSucessores->chave, filaDeSaida); varreSucessores = varreSucessores->prox; } valorDoProxDaFila = proximoDaFila(filaDeSaida); } removeLista(filaDeSaida); printf("\n\n "); system("pause"); return 0;}
&raiz, &h); /* imprimeArvoreBinaria(*raiz);*/ printf("inserindo o J\n"); insereNumaAVL('J', &raiz, &h); /* imprimeArvoreBinaria(*raiz);*/ printf("inserindo o R\n"); insereNumaAVL('R', &raiz, &h); /* imprimeArvoreBinaria(*raiz);*/ printf("inserindo o B\n"); insereNumaAVL('B', &raiz, &h); /* imprimeArvoreBinaria(*raiz);*/ printf("inserindo o N\n"); insereNumaAVL('N', &raiz, &h); /* imprimeArvoreBinaria(*raiz);*/ printf("inserindo o M\n"); insereNumaAVL('M', &raiz, &h); /*imprimeArvoreBinaria(*raiz);*/ system("PAUSE"); return 0;}
tarefa decrementando o numero* de antecessores pendentes de cada elemento dessa lista.* Continua-se procurando outra tarefa com zero antecessores e assim* por diante.* **/int main(){ int i,j; /* contadores */ celula *sucessores[MAX]; /* vetor com as listas (no livro e o CB)*/ int antecessores[MAX]; /* vetor que guarda em [i] o numero de antecessores pendentes da tarefa i */ int quantidadeDePares; int quantidadeDeTarefas; /* variaveis temporarias */ int umaTarefa, outraTarefa; /* usadas na leitura */ celula *varre; /* usada para percorrer uma lista */ printf("\n Ordenacao topologica\n --------------------\n\n"); /* vamos agora ler os dados e preencher o vetor de listas */ printf("\n Digite a quantidade de tarefas a serem executadas: "); scanf("%d", &quantidadeDeTarefas); printf("\n Digite a quantidade de dependencias entre as elas: "); scanf("%d", &quantidadeDePares); /* inicializando os dois vetores */ for(i = 0; i < quantidadeDeTarefas; i++) { inicializaLista(&(sucessores[i])); antecessores[i] = 0; } printf("\n Digite os pares representando as precedencias entre as"); printf("\n tarefas. As tarefas devem ser numeros inteiros de zero a "); printf("\n %d e os pares devem relacionar tarefas", quantidadeDeTarefas-1); printf(" \"vizinhas\", ou seja,\n se A antecede B que antecede C, entre"); printf(" com os pares \n A B\n e\n B C\n e nao entre com o par"); printf(" implicito A C.\n\n "); /* agora leremos os pares da entrada padrao e montaremos as listas */ for(i = 0; i < quantidadeDePares; i++) { scanf("%d %d", &umaTarefa, &outraTarefa); /* A entrada quer nos dizer que umaTarefa precede outraTarefa */ /* Entao insiro outraTarefa na lista de sucessores de umaTarefa */ insere(outraTarefa, sucessores[umaTarefa]); /* E incremento o numero de antecessores de outraTarefa */ antecessores[outraTarefa]++; printf(" "); } printf("\n >>> Uma ordem possivel: "); /* agora vamos percorrer as listas e imprimir a resposta na saida padrao */ for(j = 0; j < quantidadeDeTarefas; j++) { i = 0; while(antecessores[i] != 0) i++; /* encontro o primeiro zero no vetor */ /* Como i nao tem antecessores, essa tarefa ja pode ser executada */ printf(" %d ", i); /* agora excluimos essa tarefa (fazemos nao entrar mais neste if)*/ antecessores[i] = -1; /* agora varremos sua lista de sucessores e decrementamos o numero de antecessores deles */ varre = sucessores[i]->prox; while(varre != NULL) { antecessores[varre->chave]--; varre = varre->prox; } /* nao vamos mais usar esta lista */ removeLista(sucessores[i]); } printf("\n\n "); system("pause"); return 0;}/*** Analise da complexidade:* O laco da variavel j nos diz que a complexidade do programa* e o somatorio para j variando de 0 ate N-1 da complexidade do bloco* interno a este laco. Vejamos a complexidade do bloco interno:* 4*O(1) + O(N-j) + 2*O(M_i) = 4 + N - j + 2*M_i* onde* M := numero de pares da entrada* N := numero de tarefas* M_i := numero de sucessores da tarefa i* Logo, a complexidade do programa e o somatorio citado da expressao acima.* Entao fica:** somatorio (j = 0 ate N-1) de 4* + somatorio (j = 0 ate N-1) de N* - somatorio (j = 0 ate N-1) de j* + 2*somatorio (j = 0 ate N-1) de M_i** E tudo isso e
igual a* 4*N + N*N - (N*N - N)/2 + 2*M = N*N/2 + 4,5*N + 2*M = O(N*N + M)* (note que somatorio de M_i para i variando de zero a N-1 resulta em M)** Deu quadratico. Existe uma versao linear deste algoritmo!! E com uma* modificacao pequena. Veja no programa da proxima aula.**/
/* liberaArvore(raiz); // to do (por fazer) */ free(varre); return 0;}/* arquivo base.h */#ifndef JA_INCLUIU_ESTA_BASE #include #include #define JA_INCLUIU_ESTA_BASE 1 #define OVERFLOW 1 #define UNDERFLOW -1 #define OK 0 #define MAX 100 typedef struct node { char info; struct node *filhoEsq; struct node *filhoDir; } noh;/* arquivo fila.h */#include "base.h"typedef struct queue{ int primeiro; int ultimo; noh f[MAX];} fila;/*** funcao booleana que devolve um valor diferente* de zero se a fila esta vazia e zero c.c.**/int filaVazia(fila sobInvestigacao);void inicializaFila(fila *umaFila);int enfileira(noh novo, fila *umaFila);/* arquivo pilha.h */#include "base.h"typedef struct stack{ int topo; noh p[MAX];} pilha;/*** funcao booleana que devolve um valor diferente* de zero se a pilha esta vazia e zero c.c.**/int pilhaVazia(pilha sobInvestigacao);void inicializaPilha(pilha *umaPilha);int empilha(noh novo, pilha *umaPilha);/* arquivo fila.c */#include "fila.h"/*** funcao booleana que devolve um valor diferente* de zero se a fila esta vazia e zero c.c.**/int filaVazia(fila sobInvestigacao){ return (sobInvestigacao.primeiro == -1 && sobInvestigacao.ultimo == -1);}void inicializaFila(fila *umaFila){ if(umaFila == NULL) umaFila = malloc(sizeof(fila)); umaFila->primeiro = -1; umaFila->ultimo = -1;}int enfileira(noh novo, fila *umaFila){ int temp; if(filaVazia(*umaFila)) { umaFila->primeiro = 0; umaFila->ultimo = 0; umaFila->f[0] = novo; return OK; } else { temp = (umaFila->ultimo + 1) % MAX; if(temp == umaFila->primeiro) return OVERFLOW; else { umaFila->ultimo = temp; umaFila->f[temp] = novo; return OK; } }}int desenfileira(noh *desenfileirado, fila *umaFila){ if(filaVazia(*umaFila)) return UNDERFLOW; else { *desenfileirado = (umaFila->f)[umaFila->primeiro]; if(umaFila->primeiro == umaFila->ultimo) { inicializaFila(umaFila); } else umaFila->primeiro = (umaFila->primeiro +1) % MAX ; return OK; }}/* arquivo pilha.c */#include "pilha.h"/*** funcao booleana que devolve um valor diferente* de zero se a pilha esta vazia e zero c.c.**/int pilhaVazia(pilha sobInvestigacao){ return (sobInvestigacao.topo == 0);}void inicializaPilha(pilha *umaPilha){ if(umaPilha == NULL) umaPilha = malloc(sizeof(pilha)); umaPilha->topo = 0;}int empilha(noh novo, pilha *umaPilha){ if(umaPilha != NULL) { if(umaPilha->topo == MAX) return OVERFLOW; else { (umaPilha->p)[umaPilha->topo] = novo; (umaPilha->topo)++; return OK; } } else return OVERFLOW;}int desempilha(noh *desempilhado, pilha *umaPilha){ if(umaPilha != NULL) { if(umaPilha->topo == 0) return UNDERFLOW; else { (umaPilha->topo)--; *desempilhado = (umaPilha->p)[umaPilha->topo]; return OK; } } else return UNDERFLOW;}int desempilha(noh *desempilhado, pilha *umaPilha);int desenfileira(noh *desenfileirado, fila *umaFila);#endif
da arvore: %d ", altura(*raiz)); printf("\n\n\n\n "); /* esse free esta meia boca, pois nao apaga a arvore inteira */ free(varre); free(raiz); system("pause"); return 0;}/*** Note que esses percursos foram implementados usando recursividade. Mas* qualquer algoritmo recursivo pode ser implementado numa versao iterativa,* basta usar uma pilha. E a complexidade continua a mesma. Isso porque, no* fundo, os procedimentos recursivos usam uma pilha, que e a pilha de execucao.**/
No mundo encantado aonde habitas, talvez lembres de um 14 de Julho, data magna da Republica Francesa, que passamos em Paris. Eu, jamais esquecerei. Chegamos num domingo pela manha e nos hospedamos no acolhedor Hotel de Suez, situado no Blv.St.Michel. O tempo estava magnifico com o sol derramando-se por todos os parques, ruas e avenidas. Cafes repletos de turistas, pessoas das mais variadas etnias, formavam um caleidoscopio de cores. Que bela visao para os meus olhos sedentos de coisas novas. A cidade engalanada de bleu, blanc, rouge, com milhares de bandeiras francesa e os jardins cobertos de flores das mais variadas cores e matizes, oferecendo-nos um magnifico quadro impressionista. Finalmente chegou o grande dia. Saimos cedo para o Champs Elysees onde aconteceria o desfile militar. O taxi nos deixou longe e caminhamos a pe por nao sei quanto tempo. Ficamos exaustas. Lembro das tuas loucuras para fotografar os garbosos soldados vestidos em suas roupas de gala. Almocamos no Restaurante estilo Belle Epoque, em Montparnasse e fomos para outro ponto importante de Paris. A Praca da Bastilha, onde uma multidao cantava a Marselhesa. Uma alegria nunca vista. E realmente uma festa do povo. A musica espalhadas pelas orquestras levava todos a dancar. Nos pareciamos criancas deslumbradas. Como estavamos felizes. A festa continuou no largo da Torre Eiffel onde permanecemos por mais de tres horas esperando o espocar dos fogos de artificio. Passava da meia-noite, quando famintas, encontramos um restaurante e fomos jantar. Ai brindamos ao nosso amor por essa encantadora cidade, falando da loucura do nosso dia. Nunca Paris foi para nos tao bela e festiva e, ao caminharmos sem destino pelas suas ruas, perdemos a nocao do tempo e o Metro. Felizes, de faces coradas pelas muitas tacas de champanhe, voltamos para o Hotel na madrugada parisiense. Hoje, novamente num 14 Juillet, sinto saudades de ti e de Paris. Julho 2012. Finalmente estas em Paris a cidade que encanta a todos pelo charme, elegancia e alegria de viver. Claro que te acompanho em pensamentos nesta viagem de sonhos, onde podes aproveitar o convivio familiar. Para mim, nao tem melhor companhia numa viagem do que pessoas a quem amamos e que tenham afinidades conosco. Sei que sempre alimentastes o sonho de viajar com o teu filho e eis que ele se realiza. Aproveita esses momentos inesqueciveis, quando podemos dividir emocoes. Paris e sempre uma festa, seja em qualquer epoca do ano. Nao foi em vao que os grandes artistas da humanidade, apesar das dificuldades de alguns, ali viveram e trabalharam. Lembro que Hemigway aventurou-se e foi trabalhar para pequenos jornais americanos e amargou muitas dificuldades, ate tornar-se um grande escritor. Em Paris, amiga a gente ama a cidade e seus encantos. Tudo nela e radiante, por isso ser conhecida como a Cidade Luz. Ela e uma festa hoje e sempre. Poucas pessoas eu conheco que nao a admire. Para ti ela nao e novidade, mas a cada visita, vais descobrir mais e mais coisas para te encantar. O bom e que podemos ser pobres e ricos, pois o visual e para todos, basta
ter olhos bem abertos e admirar os monumentos, pontes, rio, jardins, igrejas, bosques. Ate mesmo os cemiterios sao dignos de visita. Em Paris voce descobre o passado com o pe no presente. Nas lojas de luxo e nos brechos sempre encontramos coisas para nos fascinar. Podemos sentar num cafe qualquer e saborear um bom vinho, assim como, ir ao Ritz e se aconchegar no charme de um Bar onde o luxo e a elegancia fazem jus ao preco. Isto e Paris! Andar pelas ruas de onibus, de Metro e o melhor a pe. Assim podemos observar, sentir, viver o que e esta cidade dos reis loucos e extravagantes. mas que tantas belezas criaram. Nos museus, o passado e presente nas belas pinturas. Visitar as igrejas, ouvir no silencio os orgaos que nos levam ao ceu com os timbres sonoros da musica, que tambem e eterna. Ah! Querida amiga, nao olhe para baixo. Erga os olhos e veja a maravilha da arquitetura que envolve toda a cidade. Desca as margens da Sena e aprecie os livreiros que vendem historias e sonhos. O mais importante: prometa que sempre voltara, pois Paris e para ser visitada muitas e muitas vezes. Beijos e saudades. Ag. 2012
Escolhi uma pequena ilha do litoral norte para comemorarmos o teu aniversario. So uma vez tivemos esta oportunidade, assim mesmo cercados de amigos. Agora nao, estamos sos, num local ainda pouco visitado pelos turistas, pois o verao esta frio e o tempo e chuvoso. O mar, coberto por brumas cinzentas continua no seu eterno vai e vem de ondas brancas e sorridentes, indiferentes ao tempo que passa derrubando sonhos e esperancas. Hoje, somos quase velhos. Fui ao pequeno e acolhedor Bistro e mandei preparar um jantar especial para nos dois: grenouilles a la provencal, acompanhado de um Chateau Latour, domaine Puillac, bordeaux, 1975, um vinho jovem e verdade, mas para nos, e bom ter um pouco de juventude, pelo menos no vinho. Vi que estavas cansado da viagem e deixei que ficasses sozinho no hotel, assim descansaras para a noite que sera muito especial. Sei que irias te preocupar pelo fato de sair sozinha numa tarde fria e chuvosa, enfrentando ventos fortes. Mas era necessario. Senao, como iria preparar a surpresa? Alem do mais, eu tambem precisava caminhar e aproveitar o mar, bem sabes o quanto ele me agrada quando esta bravio. O meu presente sera esta carta, a qual redijo no Mirante, num ponto isolado da ilha. Tenho a minha frente lapis e papel e um forte congnac que saboreio aos poucos, uma forma de aquecer o corpo e a alma. Quero deixar aqui a minha carinhosa mensagem de parabens. Lembras-te que um dia nos falamos: quando formos velhos o calor da paixao ira aquecer os nossos coracoes." Agora vivenciando o inverno da vida quero dizer para ti que, mesmo com o furor sexual amortecido, dentro de nos, ainda existe muito fogo e paixao. De ontem para hoje espacosas decadas nos separam, mas os sentimentos continuam jovens tal qual o vinho que ira nos aquecer a noite. Antes de retornar, irei me preparar para ti como uma novica; Aos teus olhos nao serei a velha senhora de formas arredondadas, cabelos rareando e rugas teimosas, que arrebentam os cremes magicos de beleza e teimam em se mostrarem. Quero que me vejas como uma silfide saindo das ondas, coberta pelos raios prateados do luar, entregando-te nao so o corpo, como tambem a alma, num louco banquete de amor. Feliz aniversario amigo irreal, habitante de uma galaxia perdida. Pensei que nunca mais poria os pes neste encantador Pais. Os anos passam tao rapidos. Ou somos nos que passamos por eles?Sentada num ensolarado dia num dos meus cafes preferidos, o Flore, faco o que mais gosto. Observo o mundo passar nos variados tipos de gente e sinto uma fantastica sensacao: ninguem me conhece! Assim, como se eu habitasse uma outra galaxia. E agora pergunto: e tu amigo de tantas confidencias e lembrancas, qual sera a tua morada? As cartas que escrevo percorrem um caminho sem fim a tua procura e nunca recebo uma resposta. A ultima que recebi faz tanto tempo, que ja esqueci o mes e o ano. Lembro apenas que estavas numa pequena cidade da Provenca e ao passar num campo de girassois,
lembrastes de mim enviando um belo cartao. Nele falavas de amor e paixao. Pela milionessima vez conquistavas uma nova mulher. Es perito na arte da paixao e, assim, oferecias-lhe uma porcao de sonhos o que sabes fazer muito bem. Sendo tua velha amiga e confidente, ri ao ler as palavras de entusiasmo e a promessa: desta vez e para sempre. Apenas questionei: quanto durara a eternidade dessa paixao? Desejei e isto e a pura verdade, que a mosca azul do amor picasse forte o teu coracao e dele nunca mais saisse. Ai me vens com esta triste historia e, que tragedia! Estas realmente caido e tentas a todo custo uma reconquista, mesmo sabendo que nao ha reciprocidade. Cuidado amigo, pode te custar muito caro. Foi preciso deixar o tempo passar para ficares a merce de uma mulher. E isso ai. Ha um ditado que diz: quem com muitas pedras mexem, uma lhe cai na cabeca. Cuidado para nao te ferrares como dizem os jovens do nosso tempo. O amor e o maior pregador de pecas do mundo.Assim, respondo ao teu cartao, desejando de coracao que sejas muito amado e feliz. Paris,
Eis-me novamente em Paris, dessa vez para uma longa temporada realizando um sonho ha muito desejado. O tempo passado alicercando este projeto teve muitos mil dias, mas ate que enfim aconteceu. Revisitando este mundo tao meu volto para reencontrar as varias mulheres que fui. Nao sei qual delas eu gostaria de ser agora. E verdade que a essencia e a mesma, a gente nao muda, apenas nos acomodamos ao que a vida nos impoe. Escolhi uma pequena cidade banhada pelo Mediterraneo para vivenciar esses dias de sonho sentir e abracar o mar. Como sabes, ele e eu mantemos uma forte relacao. E o unico dos meus amores que possuiu o meu corpo e a minha alma por inteiro. Nunca questionei a sua fidelidade, nao me importava. A ele eu me entregava sem nada pedir em troca. Quando me jogava nos seus bracos queria desaparecer na sua infinitude. Ele, porem sempre me devolvia para as areias mornas da praia, deixando que a lua e as estrelas me cobrissem de luz. Muitas vezes travamos lutas violentas. Rancoroso, exercia a sua forca fazendo de mim um nada, jogando-me sobre penhascos e redemoinhos e eu, qual sereia encantada, ria e zombava do seu poder. As vezes passava tempos e tempos sem lhe dar a minima atencao. Preferia seguir caminhos montanhosos e verdejantes aspirando o cheiro da terra, alimentando-me de frutos e flores. Outras vezes sentia falta dos seus abracos molhados, dos beijos lascivos sobre o meu corpo e era esse desejo do toque, que me levava de volta. Por isso amigo, estou aqui sentada neste penhasco, ouvindo o forte barulho do amante raivoso. Hoje nao tenho mais forca nem coragem para jogar-me de novo nos seus bracos. O mais que posso fazer e deixar que ele venha beijar os meus velhos e cansados pes. Assim, retorno ao ontem, sentindo uma doce e quente saudade. Beijos molhados com cheiro de maresia. Meu querido, Estou sempre voltando a esta encantadora cidade de Paris. Tenho certeza de que nunca vou me cansar de caminhar pelas suas ruas em qualquer epoca do ano. Faz tempo que nao deixo a minha ensolarada cidade do Recife para enfrentar os ventos frios e brumas, tao constantes nessa epoca do ano. Eis que se apresenta uma oportunidade e nao resisto. Vou passando pelo tempo que me maltrata de todas as formas. Lembro-me bem, quando caminhava por essas mesmas avenidas, usando elegantes sapatos altos, cabelos soltos esvoacantes e faces coradas. A propria felicidade encarnada na mulher tropical, livre, leve e solta. Hoje, mais comedida, novamente so, retorno aos pontos tao conhecidos fazendo um itinerario proustiano, onde a cada momento, eu me deparo com o ontem o trazendo inteiro para o aqui e agora. Vim para os jardins de Luxemburgo, entro no meu cafe preferido, perto da Fontana dos Medicis e sorridente, cumprimento o gordo e bonachao Maitre que, atencioso me acompanha ate a pequena mesa. Parece que somos velhos conhecidos. Sento e pouso as maos marcadas pelo tempo sobre a colorida toalha, enquanto chega o cardapio. Nao preciso ver. Dessa vez, para espanto do M.
Dupuy peco uma taca de champanhe e morangos. Esta acostumado a me servir bordeaux rouge. Observo as pessoas que passam apressadas, conversando, rindo, gesticulando. Parece que todos aqui estao correndo para algum encontro. Alguem, sobriamente vestido, com um chapeu caido sobre a testa me cumprimenta acenando. Nao sei quem e talvez, tenha me confundido. Ai penso, todas as pessoas de meia-idade sao parecidas. Nao importa, ainda quero vir muitas vezes a este Cafe. Nao tenho pressa nem hora marcada com ninguem, sou dona absoluta do meu tempo. Apanho um bloco e comeco a fazer pequenas anotacoes. Vim vez a Paris disposta a criar um roteiro sentimental para os amantes. Para isso, e necessario estar acompanhada de um bom vinho ou de alguem interessante. Faco uma lista dos lugares que pretendo revisitar nesses dias que irei flanar por aqui. O telefone toca e uma velha amiga diz que soube da minha presenca na cidade. Combinamos um encontro nas colinas de Montmartre quando o sol for se esconder. Estou rindo e lembrando de um outro fim de noite, quando cansados, sentamos nas escadas da bela Sacre Coeur com uma garrafa de Cidra na mao (o pequeno restaurante ia fechar e fomos postos pra fora). Que noite! Depois descemos e fomos dancar no Pigalle, nao sei onde, mas que foi maravilhoso disso tenho certeza e jamais esquecerei. Pois e querido amigo, Paris e sempre uma festa para todos aqueles que sao apaixonados por ela. Abracos carinhosos com sabor de champanhe e morangos da amiga. Jardins de Luxemburgo. Paris