SDUT 3363 数据结构实验之图论七:驴友计划
2015-12-04 18:27
597 查看
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #define MAX 0x3f3f3f using namespace std; int n, m, s, d; struct node { int l,w; }mp[550][550]; void creat() { int u, v, l, w; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) { if(i!=j) { mp[i][j].l = mp[i][j].w = MAX; } } for(int i = 0; i < m; i++) { scanf("%d%d%d%d",&u,&v,&l,&w); mp[u][v].l = l; mp[u][v].w = w; mp[v][u].l = l; mp[v][u].w = w; } } void Fory() { for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) for(int k = 0; k < n; k++) { if(mp[k][i].l + mp[i][j].l < mp[k][j].l) { mp[k][j].l = mp[k][i].l + mp[i][j].l; mp[k][j].w = mp[k][i].w + mp[i][j].w; } else if(mp[k][i].l + mp[i][j].l == mp[k][j].l) { if(mp[k][j].w > mp[k][i].w + mp[i][j].w) { mp[k][j].w = mp[k][i].w + mp[i][j].w; } } } cout<<mp[s][d].l<<" "<<mp[s][d].w<<endl; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&n,&m,&s,&d); creat(); Fory(); } return 0; }
相关文章推荐
- SDUTOJ3361-数据结构实验之图论四:迷宫探索
- HDU 4467 Graph(分块)
- 数据结构实验之查找一:二叉排序树
- 数据结构与算法-----搜索和排序(C语言库函数的使用)
- 金典之数组与字符串
- 数据结构实验三
- Android的NDK开发(4)————JNI数据结构之JNINativeMethod
- splay的入门
- 深入解析Java对象的hashCode和hashCode在HashMap的底层数据结构的应用
- 线性表(一)--顺序存储结构
- 数据结构与算法-----快速排序
- 数据结构基础知识之结构体
- Android MPAndroidChart之PieChart和数据结构以及模型【5】
- 数据结构--Chapter4(串与数组)
- 数据结构之堆---最大堆和最小堆
- 数据结构实验之查找二:平衡二叉树
- 自己编写的一个数据结构,类似优先级队列
- 数据结构--二叉树按层次建立和按层次输出二叉树的内容
- 数据结构上机实验dfs&&bfs遍历图
- 数据结构实验之查找四:二分查找