全部评论 2

  • 置顶

    攒

    2026-09-11 来自 浙江

    1
  • 美味正解

    #include<bits/stdc++.h>
    using namespace std;
    vector<int> g[100005];
    int x[100005],y[100005];
    bool vis[100005];
    int mxx,mxy,mnx=1e9,mny=1e9;
    int ans=1e9;
    void dfs(int u){
    	vis[u]=1;
        //cout << u << " ";
    	mxx=max(mxx,x[u]);
    	mxy=max(mxy,y[u]);
    	mnx=min(mnx,x[u]);
    	mny=min(mny,y[u]);
    	for(auto v:g[u]){
    		if(!vis[v])dfs(v);
    	}
    }
    int main(){
    	int n,m;
    	cin >> n >> m;
    	for(int i = 1;i <= n;i++){
    		cin >> x[i] >> y[i];
            //cout << x[i] << y[i] << "\n";
    	}
    	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++){
            if(vis[i])continue;
    		mny = mnx = 1e9;
    		mxx = mxy = 0;
    		dfs(i);
            //cout << mny << " " << mnx << "\n";
    		ans=min(ans,(mxx-mnx+mxy-mny)*2);
    	}
    	cout << ans;
    	return 0;
    }
    
    

    但提交过不了是因为测试点有误

    3天前 来自 广东

    0
暂无数据

提交答案之后,这里将显示提交结果~

首页