ZOJ 1221Risk_Floyd - Dijkstra
来源:互联网 发布:淘宝客是做什么的 编辑:程序博客网 时间:2024/06/09 16:18
这题非常适合我这样的新手做,,,刚学了Floyd 和 Dijkstra,正好用这题练习一下
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=39591
这题既可以用Floyd ,也可以用Dijkstra。。
Dijkstra:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <set>#include <queue>#include <map>#include <stack>#define PI 3.1415926#define E 1000using namespace std;typedef long long LL;const int INT_MAX = 99999999;int grap[110][110];int dis[110],vis[110];void Dij(int u0){ for(int i = 1; i <= 20; i++) { dis[i] = INT_MAX; vis[i] = 0; } dis[u0] = 0; for(int i = 1; i <= 20; i++) { int MIN = INT_MAX; int u = u0; for(int j = 1; j <= 20; j++) { if(!vis[j] && dis[j] < MIN) { u = j; MIN = dis[j]; } } vis[u] = 1; for(int j = 1; j <= 20; j++) { if(!vis[j] && (MIN + grap[u][j] < dis[j])) dis[j] = MIN + grap[u][j]; } }}int main(){// freopen("in.txt","r",stdin); int Case = 1; int n; while(~scanf("%d",&n)) { for(int i = 1; i <= 20; i++) { for(int j = 1; j <= 20; j++) grap[i][j] = grap[j][i] = INT_MAX; } int a; while( n -- ) { scanf("%d",&a); grap[1][a] = 1; } for(int i = 2; i < 20; i++) { scanf("%d",&a); int t; for(int j = 0; j < a; j++) { scanf("%d",&t); grap[i][t] = 1; grap[t][i] = 1; } } int b; printf("Test Set #%d\n",Case ++); scanf("%d",&b); while(b --) { int f,e; scanf("%d%d",&f,&e); Dij(f); printf("%d to %d: %d\n",f,e,dis[e]); } printf("\n"); } return 0;}Floyd :
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <set>#include <queue>#include <map>#include <stack>#define PI 3.1415926#define E 1000using namespace std;typedef long long LL;const int INT_MAX = 99999999;int grap[110][110];//int dis[110],vis[110];void Floyd(){ for(int k = 1; k <= 20; k++) for(int i = 1; i <= 20; i++) for(int j = 1; j <=20; j++) if(grap[i][k] + grap[k][j] < grap[i][j]) { grap[i][j] = grap[i][k] + grap[k][j]; }}int main(){// freopen("in.txt","r",stdin); int Case = 1; int n; while(~scanf("%d",&n)) { for(int i = 1; i <= 20; i++) { for(int j = 1; j <= 20; j++) { grap[i][j] = grap[j][i] = INT_MAX; } } int a; while( n -- ) { scanf("%d",&a); grap[1][a] = 1; } for(int i = 2; i < 20; i++) { scanf("%d",&a); int t; for(int j = 0; j < a; j++) { scanf("%d",&t); grap[i][t] = 1; grap[t][i] = 1; } } Floyd(); int b; printf("Test Set #%d\n",Case ++); scanf("%d",&b); while(b --) { int f,e; scanf("%d%d",&f,&e); printf("%d to %d: %d\n",f,e,grap[f][e]); } printf("\n"); } return 0;}
0 0
- ZOJ 1221Risk_Floyd - Dijkstra
- ZOJ Dijkstra
- ZOJ 1891 Subway (dijkstra)
- ZOJ 1298 Dijkstra
- ZOJ 3862 Intersection (dijkstra)
- zoj 1221Risk—dijkstra算法和Floyd算法
- ZOJ 1952 Heavy Cargo (dijkstra )
- ZOJ 2504 Help John! (dijkstra)
- zoj 2504 Help John!(Dijkstra~~)
- ZOJ 1298 Domino Effect【dijkstra】
- zoj 2750 dijkstra()
- ZOJ 1904 Frogger 另一种Dijkstra
- ZOJ--1655--Transport Goods【dijkstra】
- zoj 1655 Transport Goods Dijkstra
- ZOJ 3946 Highway Project(Dijkstra)
- ZOJ 1082 Stockbroker Grapevine (dijkstra方法)
- ZOJ 1456 Minimum Transport Cost (dijkstra+dfs)
- zoj 1589 Professor John(Dijkstra~)
- 更新Podfile时半天没反应解决方案
- Java Web SSH-Hibernate框架复习
- Android Animation无限循环动画
- sjtu-acm-1033
- Permutation Sequence
- ZOJ 1221Risk_Floyd - Dijkstra
- unix高级编程
- GDataXMLNode应用
- codeforces 455C C. Civilization(树形dp+树的直径+并查集)
- 【设计模式】里氏代换
- 数据结构——概论
- 搭建tomcat服务器,目标可通过外网ip访问本机
- ORMLite框架(1)——入门用法
- hdu4135Co-prime