329292026-10-03 19:39:56VargaVivienEgyirányú utakcpp17Hibás válasz 3/1001.105s128000 KiB
#include <iostream>
#include <string.h>
#include <algorithm>


using namespace std;

void rf(int honnan, int hova, int ut[], int old_volt[], int egy[], int m, int n, int **varos, int **el, int *irany)
{
    int j_ut, kov, uj_ut[m + 1], uj_egy[2 * m], t,volt[n];
    copy(old_volt,old_volt+n,volt);
    volt[honnan]=1;
    for(int ut_idx = 0; ut_idx < varos[honnan][0]; ut_idx++)
    {
        j_ut = varos[honnan][ut_idx + 1];
        if(egy[j_ut] != -1)
        {
            kov = el[1][j_ut];
            if(kov == hova)
            {
                ut[0]++;
                ut[ut[0]] = j_ut;
                for(int i = 1; i <= ut[0]; i++)
                {
                    if(ut[i] < m)
                    {
                        t = ut[i];
                    }
                    else
                    {
                        t = ut[i] - m;
                    }
                    if(irany[t] != 2)
                    {
                        if(irany[t] == 0)
                        {
                            if(ut[i] < m)
                            {
                                irany[t] = 1;
                            }
                            else
                            {
                                irany[t] = -1;
                            }
                        }
                        else
                        {
                            if((ut[i] < m && irany[t] == -1) || (ut[i] >= m && irany[t] == 1))
                            {
                                irany[t] = 2;
                            }
                        }

                    }

                }
                ut[0]--;
            }
            else
            {
                if(volt[kov] == 0)
                {
                    copy(ut, ut + m + 1, uj_ut);
                    copy(egy, egy + 2 * m, uj_egy);
                    uj_ut[0]++;
                    uj_ut[uj_ut[0]] = j_ut;
                    uj_egy[j_ut] = 1;
                    if(j_ut >= m)
                    {
                        uj_egy[j_ut - m] = -1;
                    }
                    else
                    {
                        uj_egy[j_ut + m] = -1;
                    }
                    rf(kov, hova, uj_ut, volt,  uj_egy, m, n, varos, el, irany);
                }
            }

        }
    }

}

int main()
{
    int n, m, p,kk;
    cin >> n >> m;

    int **el= new int*[2];
    for(int i= 0; i < 2; i++)
    {
        el[i] = new int[2* m];
    }
    int **varos = new int*[n + 1];
    for(int i = 0; i <= n; i++)
    {
        varos[i] = new int[m + 1];
        varos[i][0]=0;
    }

    int irany[m], volt[n]= {0}, ut[m + 1], egy[2*m];
    memset(varos, 0, sizeof varos);
    memset(irany, 0, sizeof irany);
    memset(volt, 0, sizeof volt);
    memset(egy, 0, sizeof egy);

    for(int i = 0; i < m; i++)
    {
        cin >> el[0][i] >> el[1][i];
        el[0][i + m] =  el[1][i];
        el[1][i + m] =  el[0][i];
    }

    bool dupla;
    for(int i = 0; i < 2 * m; i++)
    {
        if(el[0][i] == el[1][i])
        {
            if(i < m)
            {
                irany[i] = 2;
            }
        }
        else
        {
            dupla = false;
            /*for(int j = 0; j < i; j++)
            {
                if(el[0][i] == el[0][j] && el[1][i] == el[1][j])
                {
                    dupla = true;
                    if(i < m)
                    {
                        irany[i] = 2;
                        irany[j] = 2;
                    }
                }
            }*/
            if(!dupla)
            {
                varos[el[0][i]][0]++;
                varos[el[0][i]][varos[el[0][i]][0]] = i;
            }
        }
    }
    cin >> p;
    int honnan, hova;
    for(int i = 0; i < p; i++)
    {
        cin >> honnan >> hova;
        ut[0]=0;

        rf(honnan, hova, ut, volt, egy, m, n, varos, el, irany);

    }

    for(int i = 0; i < m; i++)
    {
        if(irany[i] == -1)
        {
            cout << "L";
        }
        if(irany[i] == 1)
        {
            cout << "R";
        }
        if(irany[i] == 2)
        {
            cout << "B";
        }
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base3/100
1Elfogadva3/31ms500 KiB
2Hibás válasz0/31ms316 KiB
3Hibás válasz0/31ms500 KiB
4Hibás válasz0/38ms4660 KiB
5Hibás válasz0/397ms10484 KiB
6Időlimit túllépés0/31.1s3128 KiB
7Hibás válasz0/396ms10880 KiB
8Időlimit túllépés0/31.1s4784 KiB
9Időlimit túllépés0/41.082s5152 KiB
10Futási hiba0/4204ms128000 KiB
11Futási hiba0/4128ms128000 KiB
12Futási hiba0/4126ms128000 KiB
13Futási hiba0/4128ms128000 KiB
14Futási hiba0/4128ms128000 KiB
15Futási hiba0/4126ms128000 KiB
16Futási hiba0/4150ms128000 KiB
17Futási hiba0/4149ms128000 KiB
18Futási hiba0/4148ms128000 KiB
19Futási hiba0/4129ms128000 KiB
20Futási hiba0/4151ms128000 KiB
21Futási hiba0/4128ms128000 KiB
22Futási hiba0/4151ms128000 KiB
23Futási hiba0/4123ms128000 KiB
24Futási hiba0/4151ms128000 KiB
25Időlimit túllépés0/41.105s122676 KiB
26Futási hiba0/4145ms128000 KiB
27Futási hiba0/4127ms128000 KiB