QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#855354 | #9623. 合成大西瓜 | huangce | WA | 1ms | 7384kb | C++17 | 1.5kb | 2025-01-12 18:50:02 | 2025-01-12 18:50:02 |
Judging History
answer
#include<bits/stdc++.h>
#define endl '\n'
#define ll long long
#define int ll
using namespace std;
constexpr int N=1e5+7;
constexpr int M=2e3+7;
int n,m;
pair<int,int> p[N];
vector<int> g[N];
bool vis[N];
void solve()
{
cin>>n>>m;
for(int i=0;i<=n+5;i++) g[i].clear(),vis[i]=0;
for(int i=1;i<=n;i++)
{
cin>>p[i].first;
p[i].second=i;
}
sort(p+1,p+1+n);
// cout<<endl;
// for(int i=1;i<=n;i++)
// {
// cout<<p[i].first<<' '<<p[i].second<<endl;
// }
// return;
for(int i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
for(int i=1;i<=n;i++)
{
sort(g[i].begin(),g[i].end());
}
// 从大的往小遍历
for(int h=n;h>=1;h--)
{
int i=p[h].second;
if(vis[i]) continue;
int len=g[i].size();
if(len&1) // 奇数
{
vector<int> tmp;
map<int,bool> mp;
for(int j=0;j<len-1;j+=2)
{
vis[g[i][j]]=1;
vis[g[i][j+1]]=1;
tmp.push_back(g[i][j]);
tmp.push_back(g[i][j+1]);
mp[g[i][j]]=1;
mp[g[i][j+1]]=1;
}
int tmpv=g[i].back();
g[i].clear();
g[i].push_back(tmpv);
for(int j=0;j<tmp.size();j++)
{
int u=tmp[j];
for(int k=0;k<g[u].size();k++)
{
int v=g[u][k];
if(v==i) continue;
if(mp[v]) continue;
g[i].push_back(v);
}
g[u].clear();
}
}
else
{
cout<<p[h].first<<endl;
return;
}
}
}
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T=1; //cin>>T;
while(T--){solve();}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5980kb
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: 0
Accepted
time: 0ms
memory: 5972kb
input:
5 7 1 5 3 1 4 3 5 1 3 5 1 1 4 5 4 2 4 3 2
output:
5
result:
ok single line: '5'
Test #3:
score: -100
Wrong Answer
time: 1ms
memory: 7384kb
input:
7 7 2 4 2 3 3 6 7 5 1 2 6 5 3 4 6 1 6 1 2 2 7
output:
3
result:
wrong answer 1st lines differ - expected: '6', found: '3'