Pagini: 1 [2]   În jos
  Imprimă  
Ajutor Subiect: 014 Parcurgere DFS - componente conexe  (Citit de 18908 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #25 : Iulie 07, 2012, 13:50:31 »

Multumesc frumos.  Ok Stiu ca se poate fara ( am si facut fara  Smile ) , insa din intamplare am observat ca sursa oficiala e cu pointeri.
Memorat
hiticas_abel
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 11



Vezi Profilul
« Răspunde #26 : Iunie 27, 2013, 12:33:12 »

Cum as putea simula recursivitatea cu ajutorul unei structuri de date?
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #27 : Iunie 27, 2013, 13:10:16 »

Foloseste o stiva exact pe principiul recursivitatii.  Ok
Memorat
Sapientia
Strain
*

Karma: 0
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #28 : Octombrie 29, 2013, 18:33:56 »

Algoritmul este exact acelasi cu sursa de 50 de puncte...si totusi primesc doar 5 Smile...ma poate lamuri cineva? Brick wall,Am incercat sa implementez si listele de adiacenta si primesc doar 10 puncte..
#include <iostream>
#include <cstdio>
#define Nmax 1001
using namespace std;
int n,i,j,cmp=0;
int a[Nmax][Nmax];
bool viz[Nmax];
void citire(int &n)
{
    int m;
    freopen("dfs.in","r",stdin);
    freopen("dfs.out","w",stdout);
    scanf("%d %d",&n,&m);
    int x,y;
    for(i=1;i<=m;++i)
    {
        scanf("%d %d",&x,&y);
        a
  • [y]=1;
        a[y]
  • =1;
    }
}
void dfs(int x)
{
    viz
  • =1;
    for(i=1;i<=n;++i)
     if (!viz && a
  • ) dfs(i);
}
int main()
{
    citire(n);
    for(i=1;i<=n;++i)
     if (!viz) {++cmp;dfs(i);}
    printf("%d",cmp);
    return 0;
}
Memorat
classius
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #29 : Octombrie 30, 2013, 17:17:27 »

Nu mai folosi variabile globale, daca nu stii cum sa le administrezi. Variabila "i" va fi folosita si in functia main si in functia dfs.
Pentru testul 3 0 programul tau da 1 cand ar trebui sa dea 3
Memorat
alexandru70
Strain


Karma: -7
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #30 : Decembrie 10, 2013, 23:56:35 »

Imi poate spune si mie cineva ce probleme ar trebui sa rezolv pentru a consolida grafurile? Pana acum stiu bfs si dfs, si am inteles cat de cat floyd-warshall.
Memorat
sulzandrei
Strain
*

Karma: -3
Deconectat Deconectat

Mesaje: 28



Vezi Profilul
« Răspunde #31 : Februarie 08, 2016, 12:56:58 »

Se poate rezolva si cu paduri de multimi disjuncte foarte frumos  Ok
Memorat
Beatrice96
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #32 : Martie 22, 2016, 19:11:26 »

Imi poate explica si mie cineva de ce imi da doar 5 pct la programul asta:

#include<iostream>
#include<fstream>
#include<vector>
#include<map>
using namespace std;

pair<int, int> P;
vector<pair<int, int> > v;

map<int, vector<int> > lista;

int n,m,a,b, viz[100];

void citire()
{
    ifstream f("dfs.in");
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        f>>a>>b;
        lista[a].push_back(b);
        lista.push_back(a);
    }
}

void df(int nod)
{
    viz[nod]=1;
    for(int i=0;i<lista[nod].size();i++)
        if(viz[lista[nod]]==0)
            df(lista[nod]);
}

int comp_conex()
{
    int k=0;
    for(int i=1;i<=n;i++)
    {
        if(viz==0)
        {
            df(i);
            k++;
        }
    }
    return k;
}

int main()
{
    ofstream g("dfs.out");
    citire();
    g<<comp_conex();
}

Raspunsul e corect..oare nu accepta implementarea cu map, vector, pair?..
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #33 : Martie 22, 2016, 19:37:43 »

Salut! Vectorul tău viz[] este mult prea mic pentru datele de intrare.
Apropo, n-ai niciun motiv să folosești map la problema asta. Poți să declari lista așa:
Cod:
vector<vector<int>> lista(n + 1, vector<int>())
.
Memorat
Pagini: 1 [2]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines