我用同一份代码交 这题 每次提交都是不一样的分数(一部分WA一部分AC)
用的是这份代码:
#include <bits/stdc++.h>
using namespace std;
int n,a[510][510],s;
pair<int,int> maxn[510],smaxn[510],sm;
priority_queue<pair<int,int> > q[510];
int v[510];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
cin>>a[i][j];
a[j][i]=a[i][j];
}
a[i][i]=-1;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j) continue;
if(a[i][j]>maxn[i].first){
smaxn[i]=maxn[i];
maxn[i]=make_pair(a[i][j],j);
}
else smaxn[i]=max(smaxn[i],make_pair(a[i][j],j));
q[i].push(make_pair(a[i][j],j));
}
if(smaxn[i].first>sm.first) sm=smaxn[i],s=i;
}
v[s]=1;
while(v[q[s].top().second]) q[s].pop();
s=q[s].top().second;
v[s]=2;
v[sm.second]=1;
while(v[q[sm.second].top().second]) q[sm.second].pop();
s=q[sm.second].top().second;
v[s]=2;
for(int i=3;i<=n/2;i++){
while(v[q[s].top().second]) q[s].pop();
s=q[s].top().second;
v[s]=1;
while(v[q[s].top().second]) q[s].pop();
s=q[s].top().second;
v[s]=2;
}
int aa;
for(int i=1;i<=n;i++){
if(v[i]!=2) continue;
for(int j=1;j<=n;j++){
if(i==j||v[j]!=2) continue;
aa=max(aa,a[i][j]);
}
}
if(aa>sm.first) cout<<0;
else cout<<"1\n"<<sm.first;
return 0;
}
现在两个账号交都变成AC了,这是bug吗