90分,第一个点wa,求助,谢谢大佬

P2212 [USACO14MAR] Watering the Fields S

``` #include <iostream> #include <string> #include <cstring> #include <algorithm> #include <queue> typedef long long LL; using namespace std; const int N = 5e3+10; vector<pair<int, int> > g[N]; int dis[N]; bool vis[N]; int x[N],y[N]; int main() { int n,c; cin>>n>>c; for(int i=1;i<=n;i++){ cin>>x[i]>>y[i]; for(int j=1;j<i;j++){ int d = (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]); if(d<c) continue; g[i].push_back({j,d}); g[j].push_back({i,d}); } } int ans = 0; memset(dis,0x3f,sizeof(dis)); dis[1] = 0; for(int k=1;k<=n;k++){ int u = 0, minn = 1e9; for(int i=1;i<=n;i++){ if(vis[i]==0&&dis[i]<minn){ u = i; minn = dis[i]; } } if(u==0){ cout<<-1<<endl; return 0; } vis[u] = 1; ans += dis[u]; for(auto t : g[u]){ int v = t.first, w = t.second; if(vis[v]==0){ dis[v] = min(dis[v],w); } } } cout<<ans<<endl; return 0; } ```
by wininaction @ 2022-04-09 19:47:47


|