158732025-03-07 11:14:27UVinceGlassworkscpp17Runtime error 40/100257ms262144 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

vector<vector<int>> g;
vector<int> c;
vector<vector<int>> d;

void bfs(int v) {
    queue<int> q;
    q.push(v);
    d[v][v]=0;
    while (!q.empty()){
        int cur = q.front();
        q.pop();
        for (int to : g[cur]){
            if (d[v][to]==-1) {
                d[v][to]=d[v][cur]+1;
                q.push(to);
            }
        }
    }
}


int main(){
    int n,m;
    cin>>n>>m;
    g.resize(n+1);
    c.resize(n+1);
    d.resize(n+1, vector<int> (n+1, -1));
    for (int i=0;i<n;i++){
        cin>>c[i];
    }
    for (int i=0;i<m;i++){
        int a,b;
        cin>>a>>b;
        g[a].push_back(b);
        g[b].push_back(a);
    }
    for (int i=0;i<n;i++) bfs(i);

    int ans=INT_MAX;
    for (int i=0;i<n;i++){
        int mn=-1;
        for (int j=0;j<n;j++){
            if (c[j]==c[i]) continue;
            if (d[i][j]==-1) continue;

            if (mn==-1 || d[i][j]<d[i][mn]) mn=j;
        }
        if (mn==-1) continue;
        int mn2=-1;
        for (int j=0;j<n;j++){
            if (c[j]==c[i] || c[j]==c[mn]) continue;
            if (d[i][j]==-1) continue;

            if (mn2==-1 || d[i][j]<d[i][mn2]) mn2=j;
        }
        if (mn2==-1) continue;
        ans=min(ans, d[i][mn]+d[i][mn2]);
    }
    if (ans==INT_MAX){
        cout<<-1;
        return 0;
    }
    cout<<ans;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask220/20
3Accepted6ms1332 KiB
4Accepted4ms1332 KiB
5Accepted4ms1436 KiB
6Accepted6ms1332 KiB
7Accepted6ms1332 KiB
8Accepted6ms1336 KiB
9Accepted3ms824 KiB
10Accepted4ms896 KiB
11Accepted4ms820 KiB
subtask320/20
12Accepted18ms4232 KiB
13Accepted18ms4400 KiB
14Accepted19ms4408 KiB
15Accepted27ms4404 KiB
16Accepted27ms4596 KiB
17Accepted26ms4408 KiB
18Accepted27ms4404 KiB
19Accepted23ms4404 KiB
20Accepted17ms4404 KiB
subtask40/20
21Runtime error211ms262144 KiB
22Runtime error209ms262144 KiB
23Runtime error252ms262144 KiB
24Runtime error252ms262144 KiB
25Runtime error257ms262144 KiB
26Runtime error207ms262144 KiB
27Runtime error208ms262144 KiB
28Runtime error254ms262144 KiB
29Runtime error211ms262144 KiB
30Runtime error203ms262144 KiB
subtask50/40
31Runtime error207ms262144 KiB
32Runtime error203ms262144 KiB
33Runtime error250ms262144 KiB
34Runtime error248ms262144 KiB
35Runtime error202ms262144 KiB
36Runtime error203ms262144 KiB
37Runtime error246ms262144 KiB
38Runtime error245ms262144 KiB
39Runtime error210ms262144 KiB
40Runtime error204ms262144 KiB
41Runtime error231ms262144 KiB
42Runtime error246ms262144 KiB
43Runtime error206ms262144 KiB
44Runtime error209ms262144 KiB
45Runtime error200ms262144 KiB
46Runtime error247ms262144 KiB
47Runtime error248ms262144 KiB