Submission #722722

#TimeUsernameProblemLanguageResultExecution timeMemory
722722vjudge1Mostovi (COI14_mostovi)C++14
0 / 100
1 ms476 KiB
#include <bits/stdc++.h>

using namespace std;
int n;
bool smee[1000000];
int most[1000000];
bool visited[1002];

bool proveri(int pocetok,int kraj)
{
    queue<int> q;
    q.push(pocetok);
    visited[pocetok]=true;
    while(!q.empty())
    {
        int poz=q.front();
        //cout<<poz<<endl;
        //system("pause");
        q.pop();
        if (poz==kraj) return true;
        if (smee[poz])
        {
            if (poz<n && visited[poz+1]==false)
            {
                q.push(poz+1);
                visited[poz+1]=true;
            }
            if (poz>n-1 && visited[poz-1]==false)
            {
                q.push(poz-1);
                visited[poz-1]=true;
            }
        }
        if (most[poz]>0 && visited[most[poz]]==false)
        {
            visited[most[poz]]=true;
            q.push(most[poz]);
        }
    }
    return false;
}

int main()
{
    cin>>n;
    int t;
    cin>>t;
    for (int i=1;i<=2*n;i++) smee[i]=true;
    while(t--)
    {
        char a;
        int b,c;
        cin>>a>>b>>c;
        if (a=='A')
        {
            most[b]=c;
            most[c]=b;
        }
        if(a=='B')
        {
            if (b>n)
                smee[max(c,b)]=false;
            else smee[min(c,b)]=false;
        }
        if(a=='Q')
        {
            memset(visited,0,sizeof(visited));
            if(proveri(b,c))
                cout<< "DA\n";
            else cout<<"NE\n";
        }
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...