专题四总结



专题四总结

专题四图算法,到目前为止学习了并查集,最小生成树,最短路。

并查集找父节点:

int find(int x)

 {

 return p[x]==x?x:p[x]=find(p[x]);

 }

练习四1003

另一种:

int find(int a)

 {

 if(f[a]==a) return a;

 int tmp=f[a];

 f[a]=find(f[a]);

 nbo[a]+=nbo[tmp];   //记录父节点个数

 return f[a];

 }

练习四1022

最小生成树只会用kruscul算法,用这一个能做不少题了也就懒得学primer.

double kru()

 {

     double sum=0;

     for(int i=0;i<k;i++)

     {

         int c=find(b[i].s),d=find(b[i].e);

         if(c!=d)

         {

             p[c]=d;

             sum+=b[i].w;

         }

     }

     return sum;

 }

练习四1002

最短路会两种dijkstraFloyd

Dijstra:

int dijk()

 {

 for(int i=1;i<=n;i++)

 {

 dis[i]=map[1][i];

 }

 for(int i=1;i<=n;i++)

 {

 int mind=t,k;

 for(int j=1;j<=n;j++)

 {

 if(!vis[j]&&dis[j]<mind)

 {

 mind=dis[j];

 k=j;

 }

 }

 vis[k]=1;

 for(int j=1;j<=n;j++)

 {

 if(!vis[j]&&map[k][j]!=t&&dis[j]>dis[k]+

 map[k][j])

 dis[j]=dis[k]+map[k][j];

 }

 }

 return dis[n];

 }

练习四1009

这个专题赶上了期末考试复习,考完试再补上,要补的东西不少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值