Dijskra(有误)
2015-05-03 09:51
162 查看
#include<vector> #include<iostream> using namespace std; //邻接链表中的元素 struct E { int next; int Weight; }; vector<E> edge[101]; bool mark[101]; //标记 int Dis[101]; //距离 int main() { int n, m; while (cin >> n >> m && n > 0 && m > 0) { //初始化邻接链表 for (int i = 1; i <= n; i++) edge[i].clear(); //读数据 while (m--) { int a, b, c; cin >> a >> b >> c; E tmp; tmp.Weight = c; tmp.next = b; edge[a].push_back(tmp); tmp.next = a; edge[b].push_back(tmp); } //初始化 for (int i = 1; i <= n; i++) { Dis[i] = -1; mark[i] = false; } Dis[1] = 0; mark[1] = true; int Newp = 1; //Dijskra for (int i = 1; i < n; i++) //遍历剩下的点 { //更新集合K相邻节点距离 for (size_t j = 0; j < edge[Newp].size(); j++) { int t = edge[Newp][j].next; int c = edge[Newp][j].Weight; if (mark[t] = true) continue; if (Dis[t] == -1 || Dis[t]>Dis[Newp] + c) Dis[t] = Dis[Newp] + c; } int min = 123123123; //找到新加入的节点 for (int j = 1; j <= n; j++) { if (mark[j] == true) continue; if (Dis[j] == -1) continue; if (Dis[j] < min) { min = Dis[j]; Newp = j; } } mark[Newp] = true; } cout << Dis << endl; } return 0; }
相关文章推荐
- vs2005包加载有误的解决方法
- string.Format出现异常"输入的字符串格式有误"的解决方法
- 工行企业网银“您的数据签名有误请联系当地工行”解决办法
- Solaris10操作系统安装网卡配置有误后的调试工作
- 专家预测有误 Mac用户无需担心Java 1.7安全漏洞
- 系统时间有误,造成网站无法登录故障处理
- HDU1874(最短路问题:Dijskra+Floyd+Bellman-Ford+SPFA)
- JCO使用BAPI_MATERIAL_SAVEDATA,下列程序是否有误!!
- 一道叙述有误的模拟题
- 利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- Android自定义弹性ScrollView(有误请略过此文章)
- 参数 @objname 不明确或所声明的 @objtype (column)有误。
- 如何查看电脑核数和线程数(网传方法有误)
- textField输入内容有误时颤抖一下警示作用
- 解决在android中使用微信H5支付,提示商家参数格式有误
- //设计登陆窗口界面,当输入账号密码正确时,界面如图一所示,当输入账号密码有误时,界面如图二所示。 import java.awt.*; import java.awt.event.*; import
- 此问题理解有误,删除之以防误倒别人
- java获得windows系统时间有误的解决方案
- ie下求div的绝对边距有误,求解
- 从FIFO读的信息有误:字节对齐 问题与解决