当前位置: 首页 > news >正文

网站开发 简历项目经历/宁德市教育局官网

网站开发 简历项目经历,宁德市教育局官网,wordpress 修改阅读量,百度联盟广告点击技巧思路: 给出n个顶点m条边。一棵最小生成树中有n-1条边,所以在m条边中选n-1条边判断能否构成最小生成树,如果能则直接输出。 判断是否能构成最小生成树的条件是 当前的n-1条边的权值的和是否是最小生成树的权值的和(代码里的ans)。 步骤&…

思路:
给出n个顶点m条边。一棵最小生成树中有n-1条边,所以在m条边中选n-1条边判断能否构成最小生成树,如果能则直接输出。
判断是否能构成最小生成树的条件是 当前的n-1条边的权值的和是否是最小生成树的权值的和(代码里的ans)。
步骤:
先进行一次prim,只是为了求出MST的权值ans。
再对m条边进行深搜,当选中n-1条边时判断是否能构成最小生成树。

代码:

#include<stdio.h>
#include<string.h>
#include<string>
#include<algorithm>
#include<map> 
#include<vector>
#define INF 0x3f3f3f3f
#define Max 1010
using namespace std;int n,m,tt,ans;//顶点个数 边的个数 输出计数 MST的权值 struct edge
{int u,v,w;
} Q[Max];int mp[Max][Max],dis[Max],book[Max];
int used[Max][Max],pre[Max];
int out[Max],in[Max];        void print(int n)            // 输出最小生成树函数; 
{ printf("第%d棵最小生成树:\n",tt++);for(int j=0;j<n;j++)for(int i=0;i<=j;i++){if(i==j)printf("%d - %d:%d\n",out[i],in[i],mp[out[i]][in[i]]);else printf("%d - %d:%d,",out[i],in[i],mp[out[i]][in[i]]);}
}int prim(int u,int s)//s表示状态 
{memset(book,0,sizeof(book));int sum=0,nn=0;for(int i=1;i<=n;i++) {//初始为1到能到的顶点的距离 if(used[u][i]==s) dis[i]=mp[u][i];//在n-1条边中起点为1的边 else dis[i]=INF;//其余的边 pre[i]=u;}book[u]=1;for(int i=1;i<=n-1;i++){int minn=INF;for(int j=1;j<=n;j++){if(dis[j]<minn&&book[j]==0){minn=dis[j];u=j;}}if(minn==INF) return -1;book[u]=1;sum+=dis[u];out[nn]=pre[u];in[nn++]=u;for(int k=1;k<=n;k++){if(mp[u][k]<dis[k]&&book[k]==0&&used[u][k]==s){dis[k]=mp[u][k];pre[k]=u;}}}//if(nn==n-1)// prf(nn);return sum;
}void init()              // 初始化 
{memset(used,0,sizeof(used));for(int i=0;i<=n;i++){for(int j=0;j<=n;j++){if(i==j) mp[i][j]=0;else mp[i][j]=mp[j][i]=INF;}}
}void dfs(int top,int x,int sum)//当前选中的边,当前树中有几条边和权值 
{if(sum>ans||x>=n) return;if(top==m){if(x==n-1&&sum==ans){int cnt=prim(1,1);if(cnt==ans) print(n-1);//如果权值相同则输出n-1条边 }return; }edge tt=Q[top];used[tt.u][tt.v]=used[tt.v][tt.u]=1;//选中这条边 dfs(top+1,x+1,sum+tt.w);used[tt.u][tt.v]=used[tt.v][tt.u]=0;//取消标记dfs(top+1,x,sum);//不选这条边 }int main()
{while(~scanf("%d%d",&n,&m)){init();int u,v,w;for(int i=0; i<m; i++){scanf("%d%d%d",&u,&v,&w);if(w<mp[u][v]) mp[u][v]=mp[v][u]=w;Q[i].u=u;Q[i].v=v;Q[i].w=w;}tt=1;  ans=prim(1,0);if(ans==-1) printf("没有最小生成树,请重新输入:\n");else dfs(0,0,0);}return 0;
}/*
思路:
第一次prim只是为了求最小生成树的权值用来剪枝(期间没有更新used)
深搜:在m条边中选n-1条边判断是否能构成最小生成树 
*/ 
http://www.lbrq.cn/news/1111717.html

相关文章:

  • 淘宝自己建的网站/苏州seo报价
  • 广告公司做的网站字体侵权/开个网站平台要多少钱
  • 网站建设的3个基本原则/百度优化是什么
  • 营销型网站要多少钱/优化方案丛书官网
  • 西宁网站建设官网/seo基础理论
  • 客户关系管理心得体会/无锡seo优化公司
  • 深圳市建设工程/seo是指什么岗位
  • 茂名市城市建设档案馆网站/seo包年服务
  • 网站建设要用到编程吗/手机网站关键词快速排名
  • 重庆网站建设c/品牌宣传方式
  • 百度网页无法访问如何解决/星乐seo网站关键词排名优化
  • 网站建设福州最好/推广引流图片
  • 中国住房和城乡建设部网站证书查询/青岛seo推广专员
  • 乐清建网站/站长之家域名
  • 网站备案后换空间/山东大学经济研究院
  • 网站建设开公司现在好做吗/海南seo顾问服务
  • 建个人网站要多少钱/网络营销推广技术
  • 呼和浩特公司做网站/合肥今日头条新闻
  • 网站建设工作的作用/seo快速排名软件网站
  • 怎么建立一个网站搜关键词会跳出/免费大数据平台
  • 高端网站建设网站/电商代运营一般收多少服务费
  • 赣县区疫情最新情况今天/seo优质友链购买
  • 徐州网站开发口碑好/seo引擎优化教程
  • 代理公司注册网站/如何在百度上建立网站
  • 网站备案拍照 广州/网络营销首先要
  • 京美建站官网/国外网站排行
  • 网站建设开发方式包括/seo的优点有哪些
  • 免费做苗木的网站/石家庄新闻网
  • 网站服务器证书有问题/长尾关键词挖掘精灵官网
  • 密云区建设委员会官方网站/百度网址大全电脑版旧版本
  • FLTK UI窗口关闭时延时卡顿问题全流程分析与优化实战
  • .NET Core EFCore零基础快速入门简单使用
  • CrewAI与LangGraph:下一代智能体编排平台深度测评
  • HTML 入门教程:从零开始学习网页开发基础
  • Liunx练习项目6-创建dns服务器
  • 具身智能零碎知识点(六):VAE 核心解密:重参数化技巧(Reparameterization Trick)到底在干啥?