提交时间:2024-10-02 13:41:51

运行 ID: 32871

#include<bits/stdc++.h> #define PII pair<int,int> #define fi first #define se second using namespace std; const int N=100; vector<int> e[N]; PII a[N]; bool c[N];int n; vector<int> tmp,tmp2; inline bool chk(){ int s=tmp.size(); for(int i=1;i<=n;i++) c[i]=0; for(int i=0;i<s;i++) c[tmp[i]]=1; for(int i=0;i<s;i++){ for(auto ed:e[tmp[i]]){ if(c[ed]==0) return 0; } }return 1; }/*long double calc(vector<int> tmp){ long double res=0,u=0,d=0;int s=tmp.size(); for(int i=0;i<s;i++){ u+=tmp[i];d+=tmp[i]*tmp[i]; }u*=u;if(d!=0)res=u/d;return res; }*/ int main(){ srand(time(0)); //double C=clock(); int n,m;cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i].se; for(int i=1;i<=n;i++) a[i].fi=i; for(int i=1;i<=m;i++){ int u,v;cin>>u>>v;e[u].push_back(v); }int tim=8e7/max(m,4*n); long double ans=0; while(tim--){ random_shuffle(a+1,a+n+1); int k=rand()%n+1;//cout<<k<<' '; tmp.clear();tmp2.clear(); for(int i=1;i<=k;i++){ tmp.push_back(a[i].fi);tmp2.push_back(a[i].se); }int s=tmp2.size();long double res=0,u=0,d=0; for(int i=0;i<s;i++){ u+=tmp2[i];d+=tmp2[i]*tmp2[i]; }u=u*u;res=u/d; if(chk()) ans=max(ans,res); }printf("%.8Lf",ans); //cerr<<(clock()-C)/CLOCKS_PER_SEC*1000; return 0; }