182942025-10-17 21:08:40ercseferencTom és Jerry 1 (80)cpp17Accepted 80/8065ms5596 KiB
#include <bits/stdc++.h>
using namespace std;
struct csucs{vector<int>tom,jerry;
    int tomt=-1,jerryt=INT_MIN;};
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n,m,tomp,p,lyuk;
    cin>>n>>m>>tomp>>p>>lyuk;
    vector<csucs>a(n+1);
    for(int i=0; i<m; i++){
        int x,y,z; cin>>x>>y>>z;
        a[x].jerry.push_back(y); a[y].jerry.push_back(x);
        if(z==2){a[x].tom.push_back(y); a[y].tom.push_back(x);}}
    a[tomp].tomt=0;
    queue<int>q; q.push(tomp);
    while(!q.empty()){
        int t=q.front();
        for(int i:a[t].tom){
            if(a[i].tomt==-1){
                q.push(i); a[i].tomt=a[t].tomt+1;}}
        q.pop();}
    q.push(lyuk); a[lyuk].jerryt=INT_MAX;
    while(!q.empty()){
        int t=q.front();
        for(int i:a[t].jerry){
            if(a[i].jerryt<a[t].jerryt-1){
                if(a[i].tomt==-1)a[i].jerryt=a[t].jerryt-1;
                else a[i].jerryt=min(a[i].tomt,a[t].jerryt-1);
                if(a[i].jerryt>1)q.push(i);}}
        q.pop();}
    for(int i=0; i<p; i++){
        int x; cin>>x;
        if(a[x].jerryt>0)cout<<"IGEN"<<endl;
        else cout<<"NEM"<<endl;}
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base80/80
1Accepted0/01ms316 KiB
2Accepted0/02ms316 KiB
3Accepted4/41ms316 KiB
4Accepted4/41ms316 KiB
5Accepted4/41ms316 KiB
6Accepted4/41ms316 KiB
7Accepted4/41ms316 KiB
8Accepted4/42ms496 KiB
9Accepted4/42ms316 KiB
10Accepted4/43ms748 KiB
11Accepted4/46ms820 KiB
12Accepted4/47ms1420 KiB
13Accepted4/413ms1588 KiB
14Accepted4/426ms2992 KiB
15Accepted4/435ms3232 KiB
16Accepted4/446ms5596 KiB
17Accepted4/456ms5188 KiB
18Accepted4/439ms3892 KiB
19Accepted4/457ms4916 KiB
20Accepted4/457ms4916 KiB
21Accepted4/441ms3580 KiB
22Accepted4/465ms5172 KiB