184992025-10-24 15:23:16KristófTom és Jerry 1 (80)cpp17Hibás válasz 0/8057ms5872 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <climits>

using namespace std;

vector<int> BFS(vector<vector<int>> &graph,int v)
{
vector<bool> visit(graph.size()+1,false);
vector<int> layer(graph.size()+1,-1);
queue<int> bfs;
layer[v]=0;
visit[v]=true;

bfs.push(v);
//int layercnt=0;
while(bfs.size()!=0)
    {
    //cout<<graph[v].size()<<endl;
    v=bfs.front();
    //layercnt++;
    visit[v]=true;
    for(auto x : graph[v])
        {
        //cout<<v<<" "<<x<<" "<<layercnt<<endl;
        if(!visit[x])
            {

            layer[x]=layer[v]+1;
            visit[x]=true;

            bfs.push(x);
            }
        }
    bfs.pop();
    }



return layer;
}

vector<int> solve(vector<int> &tom,vector<vector<int>> &graph,int s,vector<bool> &visit,bool &p,int &e)
{
//visit[s]=true;
vector<int> jerry(graph.size());
queue<int> bfs;
jerry[s]=0;
bfs.push(s);
vector<int> hml(graph.size(),INT_MAX);
while(!bfs.empty())
    {

    int v=bfs.front();bfs.pop();
    visit[v]=true;
    for(int u : graph[v])
        {
        if(!visit[u])
            {
            bfs.push(u);
            }
        visit[u]=true;
        //jerry[u]=jerry[v]+1;
        if(hml[u]!=INT_MAX)
            {
            if(tom[u]==-1)
            {
            hml[u]=max(hml[u],hml[v]-1);
            }
        else hml[u]=max(hml[u],min(hml[v]-1,tom[u]-1));
        continue;
            }
        if(tom[u]==-1)
            {
            hml[u]=hml[v]-1;
            }
        else hml[u]=min(hml[v]-1,tom[u]-1);


        }
    }
return hml;
}




int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie();
    int n,m,t,jt,e;
    cin>>n>>m>>t>>jt>>e;
    vector<vector<int>>graphj(n+1);
    vector<vector<int>>grapht(n+1);
    int x,y,d;
    for(int i=0;i<m;i++)
        {
        cin>>x>>y>>d;
        graphj[x].push_back(y);
        graphj[y].push_back(x);
        if(d==2)
            {
            //cout<<x<<" "<<y<<endl;
            grapht[x].push_back(y);
            grapht[y].push_back(x);
            }
        }

    vector<int> ans=BFS(grapht,t);
    vector<bool> visit(n+1,false);
    bool p=false;
    vector<int> help=solve(ans,graphj,e,visit,p,e);
    while(jt--)
        {
        cin>>x;
        //vector<int> jerry=BFS(graphj,x);
        cout<<help[x]<<" ";
        if((help[x]>-1  )|| x==e)
            {

            cout<<"IGEN"<<"\n";
            }
        else cout<<"NEM"<<"\n";
        }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/80
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/02ms316 KiB
3Hibás válasz0/41ms500 KiB
4Hibás válasz0/41ms316 KiB
5Hibás válasz0/41ms316 KiB
6Hibás válasz0/41ms352 KiB
7Hibás válasz0/41ms316 KiB
8Hibás válasz0/42ms316 KiB
9Hibás válasz0/42ms316 KiB
10Hibás válasz0/43ms564 KiB
11Hibás válasz0/46ms820 KiB
12Hibás válasz0/47ms1500 KiB
13Hibás válasz0/413ms1736 KiB
14Hibás válasz0/426ms3064 KiB
15Hibás válasz0/435ms3156 KiB
16Hibás válasz0/450ms5872 KiB
17Hibás válasz0/457ms5288 KiB
18Hibás válasz0/435ms4148 KiB
19Hibás válasz0/446ms5172 KiB
20Hibás válasz0/439ms5164 KiB
21Hibás válasz0/432ms3892 KiB
22Hibás válasz0/454ms5432 KiB