博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3613(最短路)
阅读量:5144 次
发布时间:2019-06-13

本文共 1255 字,大约阅读时间需要 4 分钟。

题意:求解经过不多于某边数的最短路

思路:矩阵连乘,乘的次数就是不多于某边数的最短路,题目给出的顶点需要映射处理

View Code
1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 #define N 202 7 struct matrix{ 8 int f[N][N]; 9 matrix(){10 memset(f,0x3f,sizeof(f));11 }12 };13 int num;14 matrix mul(matrix a,matrix b)15 {16 matrix c;17 for(int i=1;i<=num;i++)18 for(int j=1;j<=num;j++)19 for(int k=1;k<=num;k++)20 {21 c.f[i][j]=min(c.f[i][j],a.f[i][k]+b.f[k][j]);22 }23 return c;24 }25 matrix pow(matrix m,int n)26 {27 if(n==1)return m;28 matrix tmp=pow(m,n/2);29 if(n&1)return mul(mul(tmp,tmp),m);30 return mul(tmp,tmp);31 }32 map
mp;33 int main()34 {35 int n,t,s,e;36 num=0;37 scanf("%d%d%d%d",&n,&t,&s,&e);38 mp.clear();39 matrix c;40 for(int i=1;i<=t;i++)41 {42 int a,b,w;43 scanf("%d%d%d",&w,&a,&b);44 if(mp[a]==0)mp[a]=++num;45 if(mp[b]==0)mp[b]=++num;46 c.f[mp[a]][mp[b]]=c.f[mp[b]][mp[a]]=w;47 }48 pow(c,1);49 matrix out=pow(c,n);50 cout<
<

 

转载于:https://www.cnblogs.com/huangriq/archive/2012/05/12/2497662.html

你可能感兴趣的文章
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>
SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)
查看>>
kubernetes_book
查看>>
OpenFire 的安装和配置
查看>>
ZJOI2018游记Round1
查看>>
侧边栏广告和回到顶部
查看>>
https://blog.csdn.net/u012106306/article/details/80760744
查看>>
ios应用版本号设置规则
查看>>
海上孤独的帆
查看>>
error: more than one device and emulator 问题解决
查看>>
Android Studio 编译不通过,报错“找不到org.apache.http
查看>>
springmvc集成Freemarke配置的几点
查看>>
Django 学习
查看>>
Linux-以指定用户运行redis
查看>>
Linux-socket的close和shutdown区别及应用场景
查看>>
xpath
查看>>
parted分区
查看>>