SDAU练习1001
2016-07-07 16:26
253 查看
题目编号:1001
题目大意:有N给村庄,利用二维数组给出相对村庄的距离的权值,求最小生成的最小权值。
解题思路:根据老师上课讲的kuskal模版很容易套用求解。kuskal算法是按边权值大小求最小生成树,比较简单。很固定的算法,创建结构体,然后比较函数来排序利用函数。首先初始化,创建数组来存储距离的权值,按照上课模版套用算法,然后输出结果即可。
解题感想:有了模板也不太好弄,,有参考成分
[html] view
plain copy
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int x,y,n;
}arr[10001];
int brr[10001],crr[101][101];
bool cmp(const node&a, const node&b)
{
return (a.n<b.n);
}
int YJY(int k)
{
if (brr[k]==k)
return k;
else {
int tmp=YJY(brr[k]);
brr[k]=tmp;
return tmp;
}
}
int main(){
int i,j,k,n,size,x,y,sum=0;
cin>>n;
for (i=0;i<n*n;i++)
brr[i]=i;
for (i=1;i<=n;i++)
for (j==1;j<=n;j++)
cin>>crr[i][j];
cin>>k;
for (i=0;i<k;i++)
{
cin>>x>>y;
crr[x][y]=0;
crr[y][x]=0;
}
for (i=1,k=0;i<n;i++)
for (j=1;j<n;j++,k++)
{
arr[k].x=i;
arr[k].y=j;
arr[k].n=crr[i][j];
}
sort(arr,arr+n*n,cmp);
for (k=0,i=0;k<n-1;i++)
{
x=YJY(arr[i].x);
y=YJY(arr[i].y);
if (x!=y)
{
brr[x]=y;
sum+=arr[i].n;
k++;
}
}
cout<<sum<<endl;
return 0;
}
题目大意:有N给村庄,利用二维数组给出相对村庄的距离的权值,求最小生成的最小权值。
解题思路:根据老师上课讲的kuskal模版很容易套用求解。kuskal算法是按边权值大小求最小生成树,比较简单。很固定的算法,创建结构体,然后比较函数来排序利用函数。首先初始化,创建数组来存储距离的权值,按照上课模版套用算法,然后输出结果即可。
解题感想:有了模板也不太好弄,,有参考成分
[html] view
plain copy
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int x,y,n;
}arr[10001];
int brr[10001],crr[101][101];
bool cmp(const node&a, const node&b)
{
return (a.n<b.n);
}
int YJY(int k)
{
if (brr[k]==k)
return k;
else {
int tmp=YJY(brr[k]);
brr[k]=tmp;
return tmp;
}
}
int main(){
int i,j,k,n,size,x,y,sum=0;
cin>>n;
for (i=0;i<n*n;i++)
brr[i]=i;
for (i=1;i<=n;i++)
for (j==1;j<=n;j++)
cin>>crr[i][j];
cin>>k;
for (i=0;i<k;i++)
{
cin>>x>>y;
crr[x][y]=0;
crr[y][x]=0;
}
for (i=1,k=0;i<n;i++)
for (j=1;j<n;j++,k++)
{
arr[k].x=i;
arr[k].y=j;
arr[k].n=crr[i][j];
}
sort(arr,arr+n*n,cmp);
for (k=0,i=0;k<n-1;i++)
{
x=YJY(arr[i].x);
y=YJY(arr[i].y);
if (x!=y)
{
brr[x]=y;
sum+=arr[i].n;
k++;
}
}
cout<<sum<<endl;
return 0;
}
相关文章推荐
- ExpandableListView的用法,类似qq的联系人功能
- 用 Swift 编写面向协议的网络请求
- 操作系统精髓与设计原理(原书第6版)——学习笔记(8)
- asp.net-EF事物与存储过程
- Android 性能分析工具dumpsys的使用
- oracle分析函数:一、窗口子句的使用
- 【编程语言】Python 程序死循环解决方案
- WOW.js+animate.css让页面滚动时显示动画,使页面更有趣
- ubuntu中opencv编译问题
- Tomcat中JVM内存溢出及合理配置
- windows 程序异常崩溃等错误定位
- Java文件读写
- Windows消息拦截技术的应用(作者博客里有许多相关文章)
- 经典开源作品
- 通过tcpdump对iOS进行流量分析(无需越狱)
- php实现xml与json之间的相互转换功能实例
- 关于热修复框架nuwa的使用
- 相同的雪花
- jenkins安装与配置
- Linux系统Time_Wait状态的端口快速释放