Ir ao conteúdo
  • Cadastre-se

Tlrc

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

0
  1. Eu consertei mas ainda está dando o erro de fechar,logo após executar o void troca.Se não conseguir ajudar pode dizer,pois a leitura de um livro poderá ser mais eficiente.
  2. Cara, copiei o código errado me desculpe, a respeito dessas variáveis sem "dicas",é porque isso se trata de um código para competição,não para uma empresa então eu tenho que fazer o mais rápido possível e o usuário não precisa de "dicas". #include<bits/stdc++.h> using namespace std; int npre=1,menor=101; const int k=501; int pre[k],idade[k]; class grafo{ int v; list<int> *adj; public: grafo(int v); void adicionararesta(int v1,int v2); void troca(int v1,int v2); void dfs(int x); }; grafo::grafo(int v){ this->v=v+1; adj= new list<int>[v+1]; } void grafo::adicionararesta(int v1,int v2){ adj[v2].push_front(v1); } void grafo::troca(int v1,int v2){ adj[v1].swap(adj[v2]); for(int i=1;i<k+1;i++){ if(i==v1) continue; if(i==v2) continue; for(list<int>:: iterator it=adj.begin();it!=adj.end();it++){ if(*it==v1)*it=v2; else if(*it==v2)*it=v1; } } } void grafo::dfs(int x){ pre[x]=npre++; for(int w:adj[x]){ if(pre[w]==-1) dfs(w); if(idade[w]<menor) menor=idade[w]; } } int main(){ int k,r,a,b,c;//K=n vertice,r=n relacoes,c= n comandos cin>>k>>r>>c; grafo grafo(k+1); for(int i=1;i<k+1;i++){ cin>>idade; } for(int i=0;i<r;i++){ cin>>a>>b; grafo.adicionararesta(a,b); } while(c--){ char cmd; cin>>cmd; if(cmd=='T'){ cin>>a>>b; grafo.troca(a,b); } else{ memset(pre,-1,sizeof(pre)); npre=1; menor=101; cin>>a; grafo.dfs(a); if(menor!=101) cout<<menor; else cout<<"*"; } } return 0; } link da questão:https://olimpiada.ic.unicamp.br/pratique/p2/2017/f1/chefe/
  3. Estou com um problema nesse código em quando eu aciono a função troca o código para a compilação queria muito saber o problema,agradeço desde já. #include<bits/stdc++.h> using namespace std; int npre=1,menor=101; const int k=501; int pre[k],idade[k]; class grafo{ int v; list<int> *adj; public: grafo(int v); void adicionararesta(int v1,int v2); void troca(int v1,int v2); void dfs(int x); }; grafo::grafo(int v){ this->v=v+1; adj= new list<int>[v+1]; } void grafo::adicionararesta(int v1,int v2){ adj[v2].push_front(v1); } void grafo::troca(int v1,int v2){ adj[v1].swap(adj[v2]); for(int i=1;i<k+1;i++){ if(i==v1) continue; if(i==v2) continue; for(list<int>:: iterator it=adj.begin();it!=adj.end();it++){ if(*it==v1)*it=v2; else if(*it==v2)*it=v1; } } } void grafo::dfs(int x){ pre[x]=npre++; for(int w:adj[x]){ if(pre[w]==-1) dfs(w); if(idade[w]<menor) menor=idade[w]; } } int main(){ int k,r,a,b,c;//K=n vertice,r=n relacoes,c= n comandos cin>>k>>r>>c; grafo grafo(k+1); for(int i=1;i<k+1;i++){ cin>>idade; } for(int i=0;i<r;i++){ cin>>a>>b; grafo.adicionararesta(a,b); } while(c--){ char cmd; cin>>cmd; if(cmd=='T'){ cin>>a>>b; grafo.troca(a,b); } else{ memset(pre,-1,sizeof(pre)); npre=1; menor=101; cin>>a; grafo.dfs(a); if(menor!=101) cout<<menor; else cout<<"*"; } } return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...