Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 186 Banana : Aprilie 15, 2011, 13:49:29
am si eu o intrebare ... maimuta porneste din (1,1) ? ...
ca nu imi dau seama din enunt si nu imi iese problema nicicum ...  Brick wall
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 404 Lacuri : Mai 10, 2010, 16:59:10
ce s-ar mai putea sa fie de iau WA pe testul 6  k am exclus toate cazurile particulare ... am scapat de 1 lateral si de 0 dinauntru ..ce altceva ar mai putea fi de nu imi ia testul ?   Brick wall
 L E : am gasit... Aha ... nu verificam daca este si patrat lacul .... cam multe teste luate fara cazul ala ... nu ? 
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 199 Graf : Martie 10, 2010, 16:41:36
eu inebunesc deja cu problema asta ... oricum as modifica-o tot 80 iau ...  Eh?
daca imi puteti spune ce gresesc aici v-as fi recunoscator
Cod:
#include<stdio.h>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>

using namespace std;

#define dim 8000
#define pb push_back

vector < int > v [ dim*3 ] ;
int plm[dim];
queue < int > q;
int n,m,n1,n2;
int  dst [ dim ] ,f[dim],t[dim];
bitset <dim> nr;
void read()
{
    int x,y;
    scanf("%d %d %d %d\n",&n,&m,&n1,&n2);
    for(int i=1 ;i<=m;i++)
    {
        scanf("%d %d\n",&x,&y);
        v[x].pb(y);
       v[y].pb(x);
    }
}
void solve()
{
    int x,i;
    dst[ n1 ] =1;
    for(q.push(n1) ; !q.empty() ; q.pop())
    {
        x = q.front ();
        for(int i=0 ; i<v[x].size() ; i++)
        {
            if (dst [ v[ x ] [ i ]] == 0 )
            {
                dst [ v[x][i] ] = dst[ x ] +1;
                f[ v[x][i]] = f[ x ] ;
                q.push ( v[x][i] ) ;
                t[ v[x][i] ] = x;
            }
            else
            if( dst[v[ x ] [ i ]] == dst[ x ]+1  )
            f[ v[x][i] ] ++;
        }
     
    }
    int x2=n2,l=0;
   while ( x2 )
    {
       if ( f[x2] == f[t[x2] ] && t[x2] !=0 )
            dst[ ++l ] =t[x2];
        x2= t [ x2 ] ;
    }
    dst[ ++l ] = n2 ;
    sort ( dst + 1 , dst + l + 1 );
    printf("%d\n",l);
    for(int i=1 ;i<=l;i++)
    printf("%d " ,dst [ i ]);
}


int main ()
{
    freopen("graf.in","r",stdin);
    freopen("graf.out","w",stdout);
    read();
    solve();
    return 0;
   
}
4  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 147 Ben : Ianuarie 05, 2009, 10:21:14
multumes pentru idee dragos....inca nu stiu smenul lui mars dar il voi invata Wink Very Happy
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines