模板
来源:互联网 发布:淘宝特价 编辑:程序博客网 时间:2024/05/11 01:48
本人做题全靠心情,自我感觉一种题通了且有模板可循就总结至这里,不定期更新,注意点一般都写在注释,参考自认为典型题(不是刁难变相题),望诸神不喜轻喷勿拉黑
1、弗洛伊德算法(参考hdu1874)
#include <stdio.h>
#include <string.h>
#include <cstdio>
#include <algorithm>
using namespace std;
const int INF = 1 << 27;
const int N = 1005;
int path[N][N];//路径矩阵
int m, n; //边数和顶点数
int Min(int a, int b)
{
return a > b ? b : a;//求最小值,自我感觉写出来方便操作
}
void floyd()
{
int i, j ,k;
for(k = 0; k < n; k ++)
for(i = 0; i < n; i ++)
for(j = 0; j < n; j ++)
path[i][j] = Min(path[i][k] + path[k][j], path[i][j]);//具体k的情况可有可无可自定义
}
int main()
{
int i, j, A, B, C, st, ed;
while(~scanf("%d%d", &n, &m))
{
for(i = 0; i < n; i ++)//初始化,数组下标按照题中范围给出,注意细节
for(j = 0; j < n; j ++)
{
if(i == j) path[i][j] = 0;
else path[i][j] = path[j][i] = INF;//本题为双向道路,故input赋值操作相当于赋两个值,不同题按照不同赋值方法
}
for(i = 0; i < m; i ++)
{
scanf("%d%d%d", &A, &B, &C);
if(path[A][B] > C) path[A][B] = path[B][A] = C;//同上
}
floyd();//一般无返回值所以直接void类型出现
scanf("%d%d", &st, &ed);
if(path[st][ed] == INF) path[st][ed] = -1;
printf("%d\n", path[st][ed]);
}
return 0;
}
- 模板
- 模板?
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- 模板
- java发邮件并显示昵称
- Fiddler设置手机抓包
- slice,substr和substring的区别
- eclipse android 设置及修改生成apk的签名文件
- HTML文本框readonly和disabled属性的区别
- 模板
- node.js 学习记录(一)安装
- POJ 3254 Corn Fields 状态压缩dp 查找情况数
- ASP.Net WebAPI的返回值
- nodejs 周操作
- jQuery实例之实现滚动广告的功能
- [JS]document.body.clientHeight的取值(转)
- MongoDB学习-环境搭建与配置
- sql循环数据添加