当前位置: 首页 > news >正文

大连网站建设仟亿医疗设计网站

大连网站建设仟亿,医疗设计网站,淘宝网站短链接怎么做,wordpress自己制作主题文章目录 带权图1.1带权图的实现1.2 完整代码 带权图 1.1带权图的实现 在无向无权图的基础上,增加边的权。 使用TreeMap存储边的权重。 遍历输入文件,创建TreeMap adj存储每个节点。每个输入的adj节点链接新的TreeMap,存储相邻的边和权重 …

文章目录

  • 带权图
    • 1.1带权图的实现
    • 1.2 完整代码

带权图

在这里插入图片描述

1.1带权图的实现

在无向无权图的基础上,增加边的权。

使用TreeMap存储边的权重。

  • 遍历输入文件,创建TreeMap adj存储每个节点。
  • 每个输入的adj节点链接新的TreeMap,存储相邻的边和权重
private TreeMap<Integer, Integer>[] adj;adj = new TreeMap[V];for(int i = 0; i < V; i ++)adj[i] = new TreeMap<Integer, Integer>();
  • 两条边相连,则分别把权重加入各自的邻接表中
adj[a].put(b, weight);
adj[b].put(a, weight);
  • 判断两点之间是否有边
public boolean hasEdge(int v, int w){validateVertex(v);validateVertex(w);return adj[v].containsKey(w);
}
  • 求相邻的所有节点
public Iterable<Integer> adj(int v){validateVertex(v);return adj[v].keySet();
}
  • 求两点的权值
public int getWeight(int v, int w){if(hasEdge(v, w)) return adj[v].get(w);throw new IllegalArgumentException(String.format("No edge %d-%d", v, w));
}
  • 移除边
public void removeEdge(int v, int w){validateVertex(v);validateVertex(w);if(adj[v].containsKey(w)) E --;adj[v].remove(w);adj[w].remove(v);
}
  • 复制一个图
public Object clone(){try{WeightedGraph cloned = (WeightedGraph) super.clone();cloned.adj = new TreeMap[V];for(int v = 0; v < V; v ++){cloned.adj[v] = new TreeMap<Integer, Integer>();for(Map.Entry<Integer, Integer> entry: adj[v].entrySet())cloned.adj[v].put(entry.getKey(), entry.getValue());}return cloned;}catch (CloneNotSupportedException e){e.printStackTrace();}return null;
}

1.2 完整代码

package Chapter09_Weight_Graph;import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;
import java.util.Scanner;/// 暂时只支持无向带权图
public class WeightedGraph implements Cloneable{private int V;private int E;private TreeMap<Integer, Integer>[] adj;public WeightedGraph(String filename){File file = new File(filename);try(Scanner scanner = new Scanner(file)){V = scanner.nextInt();if(V < 0) throw new IllegalArgumentException("V must be non-negative");adj = new TreeMap[V];for(int i = 0; i < V; i ++)adj[i] = new TreeMap<Integer, Integer>();E = scanner.nextInt();if(E < 0) throw new IllegalArgumentException("E must be non-negative");for(int i = 0; i < E; i ++){int a = scanner.nextInt();validateVertex(a);int b = scanner.nextInt();validateVertex(b);int weight = scanner.nextInt();if(a == b) throw new IllegalArgumentException("Self Loop is Detected!");if(adj[a].containsKey(b)) throw new IllegalArgumentException("Parallel Edges are Detected!");adj[a].put(b, weight);adj[b].put(a, weight);}}catch(IOException e){e.printStackTrace();}}public void validateVertex(int v){if(v < 0 || v >= V)throw new IllegalArgumentException("vertex " + v + "is invalid");}public int V(){return V;}public int E(){return E;}public boolean hasEdge(int v, int w){validateVertex(v);validateVertex(w);return adj[v].containsKey(w);}public Iterable<Integer> adj(int v){validateVertex(v);return adj[v].keySet();}public int getWeight(int v, int w){if(hasEdge(v, w)) return adj[v].get(w);throw new IllegalArgumentException(String.format("No edge %d-%d", v, w));}public int degree(int v){validateVertex(v);return adj[v].size();}public void removeEdge(int v, int w){validateVertex(v);validateVertex(w);if(adj[v].containsKey(w)) E --;adj[v].remove(w);adj[w].remove(v);}@Overridepublic Object clone(){try{WeightedGraph cloned = (WeightedGraph) super.clone();cloned.adj = new TreeMap[V];for(int v = 0; v < V; v ++){cloned.adj[v] = new TreeMap<Integer, Integer>();for(Map.Entry<Integer, Integer> entry: adj[v].entrySet())cloned.adj[v].put(entry.getKey(), entry.getValue());}return cloned;}catch (CloneNotSupportedException e){e.printStackTrace();}return null;}@Overridepublic String toString(){StringBuilder sb = new StringBuilder();sb.append(String.format("V = %d, E = %d\n", V, E));for(int v = 0; v < V; v ++){sb.append(String.format("%d : ", v));for(Map.Entry<Integer, Integer> entry: adj[v].entrySet())sb.append(String.format("(%d: %d) ", entry.getKey(), entry.getValue()));sb.append('\n');}return sb.toString();}public static void main(String[] args){WeightedGraph g = new WeightedGraph("gw1.txt");System.out.print(g);}
}

在这里插入图片描述

http://www.yayakq.cn/news/857371/

相关文章:

  • 网站建设公司河南网站域名权
  • 金融企业网站制作域名历史价格查询
  • 网站建设社区交流做网站怎么赚钱吗
  • 网站开发的硬件环境是什么福田蒙派克
  • 小朋友做安全教育的网站淘宝产品页面设计
  • 烟台百度建网站做个营销型网站多少钱
  • 网站开发类手机小程序开发教程
  • 永久免费网站虚拟主机怎样开网店流程视频
  • 网站维护什么情况资源搜索器
  • 网站管理员登录成都大型网站建设公司
  • 网站开发与设计500强公司小程序vr全景组件
  • 深圳市鸿运通网站建设公司简介图片
  • 网站建设论文结尾国外创意摄影网站
  • ps做网站设计wordpress 主题巴士
  • 长沙网站设计认准智优营家网站建设的系统分析
  • dede免费手机网站模板下载wordpress添加按钮
  • 网站上海备案查询系统电子商务网站建设哪本教材比较适合中等专业学校用
  • 中国空间站简介100字广东省网站免备案表
  • 做淘宝客网站深圳龙华区核酸检测点
  • 网站托管费用多少房产网站建设的目的
  • 网站 mip网站制作公司兴田德润实力强
  • 网站建设创意公司列举网站建设的SEO策略
  • 南京外贸网站建设公司排名湘潭简单的网站建设公司
  • 英文外贸发布网站网站建设开发 脚本语言
  • wordpress淘宝客网站模板现在还有做静态网站的
  • 做好网站内能另外做链接吗兰州商城网站建设
  • 网站关键词优化技巧网店的运营模式有哪些
  • 网站如何换域名百度识图搜索图片来源
  • 上海住房建设部官方网站网络规划设计师估分
  • 合肥生态建设职业培训学校网站内江建网站