96132024-02-23 14:33:49AGergoTom és Jerry 1 (80)cpp17Hibás válasz 4/8035ms63328 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ÖsszpontTesztVerdiktIdőMemória
base4/80
1Elfogadva0/03ms1964 KiB
2Hibás válasz0/08ms10340 KiB
3Hibás válasz0/43ms2336 KiB
4Hibás válasz0/43ms2492 KiB
5Elfogadva4/43ms2656 KiB
6Hibás válasz0/43ms2984 KiB
7Hibás válasz0/44ms5184 KiB
8Hibás válasz0/47ms11204 KiB
9Hibás válasz0/48ms11484 KiB
10Hibás válasz0/418ms35288 KiB
11Hibás válasz0/428ms36056 KiB
12Futási hiba0/435ms63328 KiB
13Futási hiba0/434ms63148 KiB
14Futási hiba0/434ms62896 KiB
15Futási hiba0/434ms62888 KiB
16Futási hiba0/434ms62840 KiB
17Futási hiba0/434ms62836 KiB
18Futási hiba0/434ms62792 KiB
19Futási hiba0/434ms62804 KiB
20Futási hiba0/432ms62552 KiB
21Futási hiba0/432ms62544 KiB
22Futási hiba0/428ms62500 KiB