老师给我的标程,一运行居然CE 无语.jpg
#include<bits/stdc++.h>
#define LL long long
using namespace std;
int main(){
vector<int> ln(6);
ln[2]=69,ln[3]=110,ln[5]=161;
int n,m;
scanf("%d %d",&n,&m);
vector<int> f(n);
vector<bool> vs(n);
vector<LL> W(n);
vector<vector<int> > g(n);
int a,b;
for(int i=0;i<n;i++){
scanf("%d %d",&a,&b);
if(a==4){
a>>=1,b<<=1;
}
f[i]=b*ln[a];
}
set<pair<LL,int> > s;
int x,y;
for(int i=0;i<m;i++){
scanf("%d%d",&x,&y);
x-=1,y-=1;
g[x].emplace_back(y);
g[y].emplace_back(x);
W[x]+=f[y];
W[y]+=f[x];
}
for(int i=0;i<n;i++){
s.insert(make_pair(W[i],i));
}
LL sum=0;
for(int i=0;i<n;i++){
auto[w,x]=*s.begin();
s.erase(s.begin());
sum=max(sum,w);
vs[x]=true;
for(int y:g[x]){
if(vs[y]) continue;
s.erase(make_pair(W[y],y));
s.insert(make_pair(W[y]-=f[x],y));
}
}
LL A=sum/100;
int B=sum%100;
printf("%lld.%02d\n",A,B);
return 0;
}
改了一部分,剩下的完全看不懂