9613 2024. 02. 23 14:33:49 AGergo Tom és Jerry 1 (80) cpp17 Hibás válasz 4/80 35ms 63328 KiB
#include <bits/stdc++.h>

using namespace std;

vector<bool> canDo;

void jerrybejar(vector<vector<int>>& type,int pos,int dist, vector<vector<int>>& graf,vector<int>& tomEler,vector<bool>& volt,int lyukpos,int id)
{
    for(int x: graf[pos])
    {
        //cout << x << "-" << dist << endl;


        if(volt[x]==false && dist < tomEler[x])
        {
            volt[x] = true;
            if(x == lyukpos)
            {
                //cout << "TRUE\n";
                canDo[id] = true;
            }
            else
            {
                jerrybejar(type,x,dist+1,graf,tomEler,volt,lyukpos,id);
            }
        }
    }
}
void tombejar(vector<vector<int>>& type,int pos,int dist, vector<vector<int>>& graf,vector<int>& tomEler,vector<bool>& volt)
{
    for(int x: graf[pos])
    {
        //cout << x << "-" << dist << endl;

        if(volt[x]==false && type[pos][x] == 2)
        {

            volt[x] = true;
            tomEler[x] = dist+1;
            tombejar(type,x,dist+1,graf,tomEler,volt);

        }
    }
}

int main()
{
    int csomopont, jarat, tomPos,probalkozas,lyukPos;
    cin >> csomopont >> jarat >> tomPos >> probalkozas >> lyukPos;

    //vector<int> jerryEler(csomopont);
    vector<int> tomEler(csomopont,INT_MAX);
    vector<vector<int>> graf(csomopont+1); //melyik pontból melyikbe lehet menni
    vector<bool> volt(csomopont+1,false); //volt-e már ott
    vector<vector<int>> type(csomopont+1,vector<int>(csomopont+1,-1)); // milyen tipusú
    int t1,t2,t3;
    for(int i = 0; i < jarat; i++)
    {
        cin >> t1 >> t2 >> t3;
        graf[t1].push_back(t2);
        graf[t2].push_back(t1);
        type[t1][t2] = t3;
        type[t2][t1] = t3;
    }
    canDo.resize(probalkozas,false);

    tomEler[tomPos] = 0;
    volt[tomPos] = true;
    tombejar(type,tomPos,0,graf,tomEler,volt);

//    for(int x:tomEler)
//    {
//        cout << x << " ";
//    }

    for(int i = 0; i < probalkozas;i++)
    {
        volt.assign(csomopont+1,false);
        cin >> t1; //jerry pos

        volt[t1] = true;
        jerrybejar(type,t1,0,graf,tomEler,volt,lyukPos,i);
    }

    for(bool c: canDo)
    {
        if(c)
        {
            cout << "IGEN\n";
        }
        else
        {
            cout << "NEM\n";
        }

    }

}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 4/80
1 Elfogadva 0/0 3ms 1964 KiB
2 Hibás válasz 0/0 8ms 10340 KiB
3 Hibás válasz 0/4 3ms 2336 KiB
4 Hibás válasz 0/4 3ms 2492 KiB
5 Elfogadva 4/4 3ms 2656 KiB
6 Hibás válasz 0/4 3ms 2984 KiB
7 Hibás válasz 0/4 4ms 5184 KiB
8 Hibás válasz 0/4 7ms 11204 KiB
9 Hibás válasz 0/4 8ms 11484 KiB
10 Hibás válasz 0/4 18ms 35288 KiB
11 Hibás válasz 0/4 28ms 36056 KiB
12 Futási hiba 0/4 35ms 63328 KiB
13 Futási hiba 0/4 34ms 63148 KiB
14 Futási hiba 0/4 34ms 62896 KiB
15 Futási hiba 0/4 34ms 62888 KiB
16 Futási hiba 0/4 34ms 62840 KiB
17 Futási hiba 0/4 34ms 62836 KiB
18 Futási hiba 0/4 34ms 62792 KiB
19 Futási hiba 0/4 34ms 62804 KiB
20 Futási hiba 0/4 32ms 62552 KiB
21 Futási hiba 0/4 32ms 62544 KiB
22 Futási hiba 0/4 28ms 62500 KiB