QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#758098#9623. 合成大西瓜zzfs#RE 0ms11260kbC++171.4kb2024-11-17 15:48:522024-11-17 15:49:00

Judging History

你现在查看的是最新测评结果

  • [2024-11-17 15:49:00]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:11260kb
  • [2024-11-17 15:48:52]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define max_len 100010
struct node
{
    int val;
    list<int> linked;
    multiset<int> val_near;
} node_arr[max_len];

// val, ind
pair<int, int> val_node[max_len];

void link(int u, int v)
{
    node_arr[u].linked.push_back(v);
    node_arr[v].linked.push_back(u);
    node_arr[u].val_near.insert(node_arr[v].val);
    node_arr[v].val_near.insert(node_arr[u].val);
}

void sol()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> node_arr[i].val;
        val_node[i - 1] = make_pair(node_arr[i].val, i);
    }
    for (int i = 0; i < m; i++)
    {
        int u, v;
        cin >> u >> v;
        link(u, v);
    }
    if(n == 1)
    {
        cout << node_arr[1].val << "\n";
        return;
    }
    sort(val_node, val_node + n, greater());
    int ans = 0;
    vector<int> lzz;
    for (int i = 0; i < n; i++)
    {
        auto [val, ind] = val_node[i];
        if(node_arr[ind].linked.size() == 1)
        {
            lzz.push_back(node_arr[ind].val);
        }
        else
        {
            ans = max(ans, node_arr[ind].val);
        }
    }
    sort(lzz.begin(),lzz.end());
    //cout<<lzz[lzz.size()-2];
    if(lzz.size()!=1)
    ans = max(ans,lzz[lzz.size()-2]);
    cout << ans << endl;
    
}
int main()
{
    sol();
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 11260kb

input:

7 9
1 4 1 3 3 6 7
5 4
3 6
3 4
2 3
5 2
2 6
6 7
5 1
4 6

output:

6

result:

ok single line: '6'

Test #2:

score: -100
Runtime Error

input:

5 7
1 5 3 1 4
3 5
1 3
5 1
1 4
5 4
2 4
3 2

output:


result: