10397 - Connect the Campus

//这题之前想用prim()的变形,但错因是事先加边的时候,假如一条边的时候 必须要标记两个点vis[],这样有可能边还没匹配完,而结点就用完了

//所以换成了kruskal,使用并查集真的很方便哟 : )

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <memory.h>

using namespace std;
const int MAX=800;
const double INF=1<<30;
int n,m,l,que[1024][2],
    u[MAX*MAX],v[MAX*MAX],map[MAX][MAX];
int fa[MAX*MAX],r[MAX*MAX];
double e[MAX*MAX],point[MAX][2];
double dis(const int &i,const int &j){
    return pow(pow(point[i][0]-point[j][0],2)+
               pow(point[i][1]-point[j][1],2),0.5);
}
bool cmp(const int &i,const int &j){
    return e[i]<e[j];
}
int find(int x){
    return fa[x]==x?x:fa[x]=(find(fa[x]));
}
void kruskalVariant(){
    //bool vis[MAX*MAX];
    int s,end,p,x,y;
    double ans=0;
    for(int i=1;i<=n;i++) fa[i]=i;
    for(int i=0;i<l;i++) r[i]=i;
    for(int i=1;i<=m;i++){
        s=que[i][0];
        end=que[i][1];
        p=map[s][end];
        x=find(u[p]);
        y=find(v[p]);
        fa[x]=y;
    }
    sort(r,r+l,cmp);
    for(int i=0;i<l;i++){
        p=r[i];
        x=find(u[p]);
        y=find(v[p]);
        if(x!=y){
            ans+=e[p];
            fa[x]=y;
        }
    }
    printf("%.2lf/n",ans);
    return ;
}
int main()
{
    //freopen("i.txt","r",stdin);
    while(cin>>n){
        memset(map,0,sizeof(map));
//        memset(sta,0,sizeof(sta));
  //      for(int i=1;i<=n;i++)
    //        sta[i]=1;
        for(int i=1;i<=n;i++)
            cin>>point[i][0]>>point[i][1];
        l=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i==j)
                    continue;
                e[l]=dis(i,j);
                u[l]=i;
                v[l]=j;
                map[i][j]=map[j][i]=l++;
            }
        }
        cin>>m;
        for(int i=1;i<=m;i++)
            cin>>que[i][0]>>que[i][1];
        kruskalVariant();
    }
    return 0;
}

 

我做了一个安卓画板app现在添加了一个从url下载图片并设置成画板背板的功能。我把代码给你看,在我输入了https://www.nottingham.edu.cn/image-library/campus-news/signofnottingham.jpg的网站后提示下载失败 /* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package cn.edu.nottingham.jianxingwang.fingerpainter; import android.content.ContentResolver; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.net.Uri; import android.os.Bundle; import android.os.Parcelable; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Stack; /** * Created by pszmdf on 13/10/16. * * Derived from android graphics API sample com.example.android.apis.graphics.Fingerpaint * android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.java * */ public class FingerPainterView extends View { private Context context; private Canvas canvas; private Paint paint; private Bitmap bitmap; private Path path; private Uri uri; private Stack<Bitmap> undoStack = new
最新发布
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值