15332022-11-22 12:50:22kicsiboglarTom és Jerry 1 (80)cpp11Hibás válasz 8/8046ms13240 KiB
#include <iostream>
#include <vector>
#include <deque>

#define ll long long
using namespace std;

//ifstream cin ("input.in");
//ofstream cout ("output.out");

ll n,m,i,j,a,b,c,k,tomstart,jerrystart,p;

struct element
{
    ll seen_jerry=-1, seen_tom=-1;
    bool tom;
    ll lasttom;
    vector <ll> sz;
};

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    cin>>n>>m>>tomstart>>p>>jerrystart;
    vector <element> x(n+1);
    x[tomstart].seen_tom=0;
    x[jerrystart].seen_jerry=0;
    for (i=1;i<=m;++i)
    {
        cin>>a>>b>>c;
        x[a].sz.push_back(b);
        x[b].sz.push_back(a);
        if (c==2)
        {
            x[a].tom=true;
            x[b].tom=true;
        }
    }

    deque<ll> v;
    v.push_back(tomstart);
    ll curr=0;
    while (!v.empty())
    {
        curr=v[0];
        v.pop_front();
        for (auto& e:x[curr].sz)
        {
            if (x[e].seen_tom==-1&&x[e].tom)
            {
                x[e].seen_tom=x[curr].seen_tom+1;
                v.push_back(e);
            }
        }
    }

    v.push_back(jerrystart);
    curr=0;
    while (!v.empty())
    {
        curr=v[0];
        v.pop_front();
        if (x[curr].seen_tom!=-1) x[curr].lasttom=curr;
        for (auto& e:x[curr].sz)
        {
            if (x[e].seen_jerry==-1)
            {
                x[e].seen_jerry=x[curr].seen_jerry+1;
                x[e].lasttom=x[curr].lasttom;
                v.push_back(e);
                
            }
        }
    }

    for (i=1;i<=p;++i)
    {
        cin>>a;
        if (x[a].lasttom==0) cout<<"IGEN\n";
        else 
        {
            if (x[a].seen_jerry-x[x[a].lasttom].seen_jerry>=x[x[a].lasttom].seen_tom) cout<<"NEM\n";
            else cout<<"IGEN\n";
        }
        
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base8/80
1Elfogadva0/03ms1828 KiB
2Hibás válasz0/03ms2564 KiB
3Hibás válasz0/42ms2276 KiB
4Hibás válasz0/42ms2448 KiB
5Hibás válasz0/42ms2660 KiB
6Hibás válasz0/42ms2868 KiB
7Hibás válasz0/42ms3108 KiB
8Elfogadva4/43ms3472 KiB
9Hibás válasz0/43ms3492 KiB
10Hibás válasz0/43ms3680 KiB
11Hibás válasz0/46ms4092 KiB
12Elfogadva4/48ms5016 KiB
13Hibás válasz0/412ms5536 KiB
14Hibás válasz0/423ms7896 KiB
15Hibás válasz0/432ms9136 KiB
16Hibás válasz0/439ms12640 KiB
17Hibás válasz0/446ms12292 KiB
18Hibás válasz0/430ms10408 KiB
19Hibás válasz0/430ms11396 KiB
20Hibás válasz0/430ms11620 KiB
21Hibás válasz0/428ms10192 KiB
22Hibás válasz0/446ms13240 KiB