21892022-12-30 14:54:401478Tom és Jerry 1 (80)cpp11Hibás válasz 36/80116ms15956 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    //ifstream cin("be.txt");

    int n, m, t, p, e;
    cin >> n >> m >> t >> p >> e;
    vector<vector<int>> jN(n + 1, vector<int>(1)), tN(n + 1, vector<int>(1));
    for (int i = 1; i <= m; i++)
    {
        int k, v, s;
        cin >> k >> v >> s;
        if (s == 2)
        {
            tN[k].push_back(v);
            tN[v].push_back(k);
        }
        jN[k].push_back(v);
        jN[v].push_back(k);
    }

    /*
    for (int i = 1; i <= n; i++)
    {
        cout << i << ": " << '\n';
        for (int j = 1; j < tN[i].size(); j++)
        {
            cout << tN[i][j] << " ";
        }
        cout << '\n';
    }
    */

    vector<int> tD(n + 1, -1);
    queue<int> q;
    q.push(t);
    tD[t] = 0;
    while (!q.empty())
    {
        int a = q.front();
        q.pop();
        for (int i = 1; i < tN[a].size(); i++)
        {
            if (tD[tN[a][i]] == -1)
            {
                tD[tN[a][i]] = tD[a] + 1;
                q.push(tN[a][i]);
            }
        }
    }

    /*
    for (int i = 1; i <= n; i++)
    {
        cout << tD[i] << " ";
    }
    */

    vector<int> jD(n + 1, -1);
    q.push(e);
    if (tD[e] == -1)
    {
        jD[e] = INT_MAX;
    }
    while (!q.empty())
    {
        int a = q.front();
        q.pop();
        for (int i = 1; i < jN[a].size(); i++)
        {
            if (jD[jN[a][i]] == -1)
            {
                if (jD[a] > 0)
                {
                    jD[jN[a][i]] = jD[a] - 1;
                }
                else
                {
                    jD[jN[a][i]] = 0;
                }
                if (tD[jN[a][i]] != -1)
                {
                    jD[jN[a][i]] = min(jD[jN[a][i]], tD[jN[a][i]]);
                }
                q.push(jN[a][i]);
            }
        }
    }

    /*for (int i = 1; i <= n; i++)
    {
        cout << jD[i] << " ";
    }*/

    while (p--)
    {
        int a;
        cin >> a;
        if (jD[a] > 0)
        {
            cout << "IGEN" << '\n';
        }
        else
        {
            cout << "NEM" << '\n';
        }
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base36/80
1Elfogadva0/03ms1812 KiB
2Hibás válasz0/04ms2352 KiB
3Elfogadva4/42ms2204 KiB
4Elfogadva4/42ms2288 KiB
5Hibás válasz0/42ms2432 KiB
6Elfogadva4/42ms2652 KiB
7Elfogadva4/43ms2776 KiB
8Hibás válasz0/44ms3108 KiB
9Hibás válasz0/44ms3188 KiB
10Elfogadva4/44ms3412 KiB
11Hibás válasz0/410ms3752 KiB
12Elfogadva4/414ms5284 KiB
13Hibás válasz0/424ms5808 KiB
14Hibás válasz0/448ms8928 KiB
15Hibás válasz0/464ms9708 KiB
16Elfogadva4/476ms15956 KiB
17Elfogadva4/4108ms14140 KiB
18Hibás válasz0/467ms12144 KiB
19Hibás válasz0/482ms13948 KiB
20Hibás válasz0/478ms14168 KiB
21Elfogadva4/482ms12376 KiB
22Hibás válasz0/4116ms15312 KiB