zoukankan      html  css  js  c++  java
  • poj1258

    http://poj.org/problem?id=1258

    这题是让求最小生成树,用prim和krusal两种算法完成,还是prim算法更高效,而且更容易实现,krusal用到了并查集。贴一下留着以后复习用吧。

    /*///////////prim算法
    #include<iostream>
    using namespace std;
    int map[101][101];
    int visited[101];
    int main()
    {
    int n;
    while(cin>>n)
    {
    memset(visited,0,sizeof(visited));
    int i,j,k;
    memset(map,0,sizeof(map));
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    scanf("%d",&map[i][j]);
    visited[0]=1;
    int temp=0;
    int sum=0;
    for(i=1;i<n;i++)
    {
    int min=1000000;
    for(j=0;j<n;j++)
    if(visited[j])
    {

    for(k=0;k<n;k++)
    {
    if(!visited[k]&&map[j][k]<min)
    min=map[j][k],temp=k;
    }

    }
    sum+=min;
    visited[temp]=1;
    }
    cout<<sum<<endl;
    }
    return 0;
    }
    */ //////krusal 算法
    #include<iostream>
    using namespace std;
    int map[101][101];
    int father[10001];
    int find(int x)
    {
    int r=x;
    while(r!=father[r])
    r=father[r];
    int temp;
    while(r!=x)
    {
    temp=father[x];
    father[x]=r;
    x=temp;
    }
    return r;
    }
    void merge(int x,int y)
    {
    father[x]=y;
    }
    int main()
    {
    int n;
    while(cin>>n)
    {
    int i,j,k;
    //memset(visited,0,sizeof(visited));
    for(i=0;i<=n*n;i++)
    father[i]=i;
    memset(map,0,sizeof(map));
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    scanf("%d",&map[i][j]);
    int x,y;
    int sum=0;
    int fx,fy;
    for(i=1;i<n;i++)
    {
    int min=1000000;
    for(j=0;j<n;j++)
    for(k=j;k<n;k++)
    {

    if(map[j][k]<min)
    {
    x=find(j);
    y=find(k);
    // cout<<x<<" "<<y<<endl;
    if(x!=y)
    {
    // cout<<"x:"<<x<<" "<<"y:"<<y<<endl;
    min=map[j][k];
    fx=x;
    fy=y;
    //merge(x,y);
    }
    }
    }
    merge(fx,fy);
    // cout<<"min:"<<min<<endl;
    sum+=min;
    }
    cout<<sum<<endl;

    }
    return 0;
    }
  • 相关阅读:
    机器人的运动范围
    矩阵中的路径
    MySql数据库表的基本连接
    Java虚拟机垃圾收集算法
    spring_boot 配置
    js 表格合并单元格
    js数组操作
    前端定位Position属性四个值
    form表单在发送到服务器时候编码方式
    多文件上传CommonsMultipartResolver
  • 原文地址:https://www.cnblogs.com/orangeblog/p/2436349.html
Copyright © 2011-2022 走看看