131082025-01-06 15:36:42csdavidTom és Jerry 1 (80)cpp17Elfogadva 80/80125ms6808 KiB
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

struct node{
    vector<int> tom, jerry;
    int biztonsag=-5, macska=1000000;
    bool biztonsagos=0;
};

int main()
{
    int n, m, p, tpos, epos, b, c, d;
    cin >> n >> m >> tpos >> p >> epos;
    node a[n];
    for(int i=0; i<m; i++){
        cin >> b >> c >> d;
        b--;
        c--;
        a[b].jerry.push_back(c);
        a[c].jerry.push_back(b);
        if(d==2){
            a[b].tom.push_back(c);
            a[c].tom.push_back(b);
        }
    }
    tpos--;
    epos--;
    queue<int> q;
    q.push(tpos);
    a[tpos].macska=0;
    while(!q.empty()){
        b=q.front();
        q.pop();
        //cout << b+1 << " -> ";
        for(int& it:a[b].tom){
            if(a[it].macska==1000000){
                a[it].macska=a[b].macska+1;
                q.push(it);
            }
        }
    }
    q.push(epos);
    a[epos].biztonsagos=1;
    a[epos].biztonsag=1000000;
    while(!q.empty()){
        b=q.front();
        q.pop();
        for(int& it:a[b].jerry){
            if(a[b].biztonsag==1000000&&a[it].macska==1000000&&a[it].biztonsag==-5){
                a[it].biztonsag=1000000;
                a[it].biztonsagos=1;
                q.push(it);
            }
            else if(a[b].biztonsag>1&&a[b].biztonsag-1>a[it].biztonsag){
                a[it].biztonsag=min(a[b].biztonsag-1, a[it].macska);
                a[it].biztonsagos=1;
                q.push(it);
            }
        }
    }
    /*for(int i=0; i<n; i++){
        cout << '\n' << i+1  << ' ';
        if(a[i].biztonsagos){
            cout << "IGEN";
        }
        else{
            cout << "NEM";
        }
    }*/
    for(int i=0; i<p; i++){
        cin >> b;
        b--;
        if(a[b].biztonsagos){
            cout << "IGEN";
        }
        else{
            cout << "NEM";
        }
        cout << '\n';
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base80/80
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms316 KiB
3Elfogadva4/41ms316 KiB
4Elfogadva4/41ms316 KiB
5Elfogadva4/41ms316 KiB
6Elfogadva4/41ms316 KiB
7Elfogadva4/42ms316 KiB
8Elfogadva4/43ms316 KiB
9Elfogadva4/43ms316 KiB
10Elfogadva4/43ms608 KiB
11Elfogadva4/49ms892 KiB
12Elfogadva4/413ms1500 KiB
13Elfogadva4/423ms1952 KiB
14Elfogadva4/452ms3520 KiB
15Elfogadva4/468ms4060 KiB
16Elfogadva4/476ms6808 KiB
17Elfogadva4/4107ms6452 KiB
18Elfogadva4/474ms4916 KiB
19Elfogadva4/493ms6004 KiB
20Elfogadva4/483ms5932 KiB
21Elfogadva4/472ms4480 KiB
22Elfogadva4/4125ms6712 KiB