Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 040 Lowest Common Ancestor : Aprilie 04, 2015, 17:51:50
ar putea sa-mi spuna si mie ce e gresit la sursa mea ? #1415472

EDIT: Am gasit. Pusesem j<<1 in loc de 1<<j Neutral
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 002 Algoritmul lui Euclid extins : Aprilie 02, 2015, 12:29:34
Bosinta Alexandru.
Diferenta e ca atunci cand folosesti & , X care a apelat functia se modifica in functie de X din functie.
 
un exemplu:
void functie(int &x)
{
    x=5;
}
int main()
{
    int x=1;
    functie(x)
    cout<<x; // x va fi 5.
}
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 199 Graf : Decembrie 29, 2014, 14:40:35
imi poate spune ce e gresit in problema???
Deci prima oara fac parcurgerea in latime de la nodul X la nodul Y. Dupa care merg de la nodul Y si pentru fiecare vecin cu costul minim(
Cod:
L[now]==L[p->vecin]+1
, unde L[now] repr lungimea minima de la nodul X pana la nodul curect si L[p->vecin] lungimea de la nodul X pana la vecinul nodului curent(now) si pt fiecare vecin care indeplineste conditiile astea maresc aparitia nodului curent in lant si nr cu 1(nr reprezinta numarul de lanturi optime)). La sfarsit egalez numarul de aparitii al nodului X si Y cu nr si fac maximul din vectorul de aparitii si afisez toate nodurile egale cu acel maxim.

P.S. : de ce la testul al doilea sunt doua drumuri intre 1 si 3 cand ar trb sa fie doar unul???
Cod:
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("graf.in");
ofstream fout("graf.out");
const int NMAX=100005,MMAX=1000005,inf=2000000;
int N,M,S,L[MMAX],now,poz[NMAX],ap[NMAX],nr,Y;
class coada
{
public:
struct ncoada
{
    int val;
    ncoada* next;
}*primul,*ultimul;
    coada(int a)
    {
        primul=new ncoada;
        primul->val=a;
        ultimul=primul;
        primul->next=NULL;

    }
    void push(int a)
    {
        if(primul)
        {
            ncoada *p=new ncoada;
            ultimul->next=p;
            p->val=a;
            ultimul=p;
            ultimul->next=NULL;
        }
        else
        {
            primul=new ncoada;
            primul->val=a;
            ultimul=primul;
            primul->next=NULL;
        }

    }
    int pop(int a)
    {
        ncoada *p=primul;
        primul=primul->next;
        delete p;
        return a;
    }
    int empty()
    {
        if(primul)
            return 0;
        else return 1;
    }
};
struct graf{
    int vecin;
    graf* urm;
}*v[NMAX];
void add(int nod, int vecin)
{
    graf * p=new graf;
    p->urm=v[nod];
    p->vecin=vecin;
    v[nod]=p;
    p=new graf;
    p->urm=v[vecin];
    p->vecin=nod;
    v[vecin]=p;
}
void citire()
{
    int x,y;
    fin>>N>>M>>S>>Y;
    while(M--)
    {
        fin>>x>>y;
        add(x,y);
    }
}
void parcurgere()
{
    coada coad(S);
    now=S;
    do
    {
        now=coad.primul->val;
        graf* p=v[coad.pop(now)];
        while(p)
        {
            if(poz[p->vecin]==0)
            {
                coad.push(p->vecin);
                if(L[p->vecin]>L[now]+1)
                    L[p->vecin]=L[now]+1;
                poz[p->vecin]=1;
            }
            p=p->urm;
        }
    }while(!coad.empty());
}
void parcurgere_inapoi()
{
    coada coadb(Y);
    now=Y;
    nr=0;
    int n=0;
    graf *p=v[coadb.pop(now)];
    while(p)
    {
        if(L[now]==L[p->vecin]+1)
        {
            nr++;
            ap[now]++;
            coadb.push(p->vecin);
        }
        p=p->urm;
    }
    n=-1;
    do
    {
        now=coadb.primul->val;
        graf *p=v[coadb.pop(now)];
        while(p)
        {
            if(L[now]==L[p->vecin]+1)
            {
                n++;
                if(ap[now])
                    ap[now]++;
                else
                {
                    coadb.push(p->vecin);
                    ap[now]++;
                }
            }
            p=p->urm;
        }
        if(n>0)
            nr=nr+n;
        n=-1;
    }while(!coadb.empty());
}
void afisare()
{
    int max=0;
    ap[Y]=ap[S]=nr;
    for(int j=1;j<=N;++j)
        if(max<ap[j])
            max=ap[j];
    fout<<max<<"\n";
    for(int j=1;j<=N;++j)
        if(max==ap[j])
        fout<<j<<" ";
}

int main()
{
    citire();
    for(int j=1;j<=N;++j)
        if(j!=S)
            L[j]=inf;
    parcurgere();
    parcurgere_inapoi();
    afisare();


    return 0;
}
4  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: template specialization : Decembrie 17, 2014, 16:41:24
nu, nu este asta, copiasem eu gresit eroarea, ma scuzati:D
5  infoarena - concursuri, probleme, evaluator, articole / Informatica / template specialization : Decembrie 16, 2014, 13:36:55
de ce imi da eroarea urmatoare:
Cod:
"prototype for CVector<char> CVector<char>::uppercase()" does not match any in class Cvector<char>
candidate is: CVector<char> CVector<char>::uppercase()"
Cod:
class CVector <char>
{
    char x,y;
public:
    CVector() {};
    CVector(char a,char b) {x=a;y=b;}

    CVector operator++() {x=x+1;y=y+1; return *this;};
    CVector uppercase();
    void afisare () const{cout<<" x="<<x<<" y="<<y<<"\n";}
};
template <char>
CVector<char> CVector<char>::uppercase()
{...}
6  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: clase : Decembrie 14, 2014, 10:49:19
am inteles, mersi pentru explicatie
7  infoarena - concursuri, probleme, evaluator, articole / Informatica / clase : Decembrie 13, 2014, 12:30:57
de ce imi afiseaza valorile in ordinea inversa a obiectelor apelate?? adica eu ma asteptat sa imi afiseze ceva de genul
width=2 height=4
width=6 height=8
width=1 height=2
width=2 height=1
Asta se intampla doar daca apelez din cout, daca nu imi afiseaza in ordinea lor normala. imi poate spune cineva de ce se intampla asta??
P.S: Scuze, dar nu stiu cum sa atasez tip code asa ca  pentru cei care nu vor sa download-eze un fisier am copiat aici programul..

#include <iostream>

using namespace std;
int i;
class Rectangle
{
    int width,height;
public:
    Rectangle (int a,int b)
    {   width=a;
        height=b;
    }
    Rectangle ()
    {
        int x,y;
        cout<<" width= ";cin>>x;
        cout<<" height= ";cin>>y;
        cout<<"\n";
        width=x;
        height=y;
    }
    Rectangle (int x) {width=x; height=1;}
    int area()
    {
        cout<<" width= "<<width;
        cout<<" height= "<<height;
        cout<<" i= "<<++i;
        cout<<" \n";
        return width*height;
    }
    void set_values(int x,int y) {width=2*x; height=2*y;}
    void set_values1() {set_values(width,height);}
}rect,rectb;

int main()
{

    rectb.set_values1();
    rect.set_values1();
    Rectangle rectd(2),rectc(1,2);
    cout<<rect.area()<<" "<<rectb.area()<<" "<<rectc.area()<<" "<<rectd.area();
    return 0;
}
8  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 005 Potrivirea sirurilor : Decembrie 06, 2014, 19:01:21
vectorul pi reprezinta starile automatului, iar cu q doar parcurgem starile sau cum este?? ca nu am inteles foarte bine de ce nu scade q cu 1 ci se foloseste
while (q && A[q+1] != A)
            q = pi[q];
Adica am observat pe niste exemple ca asa este dar as vrea sa-mi explice cineva concret DE CE este asa.
9  infoarena - concursuri, probleme, evaluator, articole / Articole / Răspuns: Automate finite si KMP : Decembrie 06, 2014, 15:49:26
vectorul pi reprezinta starile automatului, iar cu q doar parcurgem starile sau cum este?? ca nu am inteles foarte bine de ce nu scade q cu 1 ci se foloseste
while (q && A[q+1] != A)
            q = pi[q];
Adica am observat pe niste exemple ca asa este dar as vrea sa-mi explice cineva concret DE CE este asa.
10  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 009 Algoritmul lui Dijkstra : August 07, 2014, 12:06:15
scz ca intreb, dar ce inseamna INF=1 << 30;??
11  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 008 Subsir crescator maximal : Iulie 30, 2014, 10:33:44
ce inseamna erorile: killed by signal 6 si lungime incorecta. Daca s-ar putea uita cineva pe sursele mele as fi recunoscator:D
12  infoarena - concursuri, probleme, evaluator, articole / Articole / Răspuns: 000 Algoritmul lui Euclid : Iulie 26, 2014, 12:30:14
Deci.. am inteles in mare partea matematica. Nu am inteles totusi un lucru. Cat sunt X0 si Y0. Daca cu 1 respectiv 0, de ce ? pentru ca asta se intampla abia cand b=0, deci X o sa devina 0, iar Y 1, ceea ce nu e corect...
13  infoarena - concursuri, probleme, evaluator, articole / Articole / Răspuns: 000 Algoritmul lui Euclid : Iulie 26, 2014, 11:28:45
nu inteleg cum ajunge programul sa rezolve ecuatiile "*x = y0; *y = x0 - (a / b) * y0;" , avand in vedere ca "euclid(b, a % b, d, &x0, &y0);" apeleaza functia inainte ca programul sa rezolve cele 2 ecuatii. Nu pot sa explic mai bine.. Daca nu ai inteles ce vreau... poti sa-mi explici cum "ruleaza" programul pas cu pas? ce face fiecare instructiune in parte?
14  infoarena - concursuri, probleme, evaluator, articole / Articole / Răspuns: 000 Algoritmul lui Euclid : Iulie 26, 2014, 08:16:36
aha, merci. poti sa-mi spui te rog de ce atunci cand ajungi la apelul lui euclid , de ce programul calculeaza si *x = y0;
*y = x0 - (a / b) * y0;. nu ar trebui sa apeleze din nou functia pana cand b==0, nemaitrecand la cele doua ecuatii care sunt dupa apel?
 euclid(b, a % b, d, &x0, &y0);
*x = y0;
*y = x0 - (a / b) * y0;
15  infoarena - concursuri, probleme, evaluator, articole / Articole / Răspuns: 000 Algoritmul lui Euclid : Iulie 25, 2014, 11:03:37
de ce a%b=a-b*c?? a-b*c nu este 0??
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines