Submission #645623

#TimeUsernameProblemLanguageResultExecution timeMemory
645623filiptudose7Colors (RMI18_colors)C++14
47 / 100
130 ms5940 KiB
#include <bits/stdc++.h>
using namespace std;
constexpr int nmax=5005;
vector<int> G[nmax];
bool sel[nmax][nmax];
int a[nmax],b[nmax];
void dfs(int nod, int culoare)
{
    sel[nod][culoare]=true;
    for(auto it: G[nod])
    {
        if(sel[it][culoare]==false && a[it]>=culoare && culoare>=b[it])dfs(it,culoare);
    }
}
int main()
{
    //freopen("colors.in","r",stdin);
    //freopen("colors.out","w",stdout);
    cin.sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>n>>m;
        for(int i=1; i<=n; ++i)
        {
            cin>>a[i];
        }
        for(int i=1; i<=n; ++i)
        {
            cin>>b[i];
        }
        for(int i=1; i<=m; ++i)
        {
            int x,y;
            cin>>x>>y;
            G[x].push_back(y);
            G[y].push_back(x);
        }
        for(int i=1; i<=n; ++i)
        {
            for(int j=1; j<=n; ++j)
                sel[j][i]=false;
            for(int j=1; j<=n; ++j)
            {
                if(a[j]==i && sel[j][i]==false)dfs(j,i);
            }
        }
        int rez=1;
        for(int i=1; i<=n; ++i)
        {
            if(sel[i][b[i]]==false)
            {
                rez=0;
                break;
            }
        }
        cout<<rez<<'\n';
        for(int i=1; i<=n; ++i)
        {
            G[i].clear();
        }
    }

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