链接:http://vjudge.net/problem/viewProblem.action?id=24941

描述:n个点,m条边的无向图,寻找从S到T的最短路。

思路:基础的单源点最短路 用Dijkstra或spfa都可以解决

这是我的实现:

  1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <queue>
5 using namespace std;
6 #define MaxN 20020
7 #define MaxM 100020
8 struct node
9 {
10 int v,dist;
11 node *next;
12 };
13 node Edge[MaxM];
14 node *cnt=&Edge[0];
15 node *adj[MaxN];
16 int dist[MaxN];
17 int N,INF;
18 int n,m,S,T;
19 inline void Get_int(int &Ret)
20 {
21 char ch;
22 bool flag=false;
23 for(;ch=getchar(),ch<'0'||ch>'9';)
24 if(ch=='-')
25 flag=true;
26 for(Ret=ch-'0';ch=getchar(),ch>='0'&&ch<='9';Ret=Ret*10+ch-'0');
27 flag&&(Ret=-Ret);
28 }
29 inline void Clean()
30 {
31 memset(Edge,0,sizeof(Edge));
32 cnt=&Edge[0];
33 memset(adj,0,sizeof(adj));
34 }
35 inline void Addedge(int u,int v,int w)
36 {
37 node *p=++cnt;
38 p->v=v;
39 p->dist=w;
40 p->next=adj[u];
41 adj[u]=p;
42
43 p=++cnt;
44 p->v=u;
45 p->dist=w;
46 p->next=adj[v];
47 adj[v]=p;
48 }
49 inline void Read_Build()
50 {
51 Get_int(n);Get_int(m);Get_int(S);Get_int(T);
52 int i,u,v,w;
53 for(i=1;i<=m;++i)
54 {
55 Get_int(u);Get_int(v);Get_int(w);
56 Addedge(u,v,w);
57 }
58 }
59 struct cmp
60 {
61 bool operator()(node a,node b)
62 {
63 return a.dist>b.dist;
64 }
65 };
66 priority_queue <node, vector<node>, cmp> q;
67 void Dijkstra(int s)
68 {
69 node c,d;
70 node *p;
71 int i,j,k;
72 memset(dist,0x3f,sizeof(dist));
73 INF=dist[s];
74 dist[s]=0;
75 c.v=s;c.dist=0;
76 q.push(c);
77 while(!q.empty())
78 {
79 d=q.top();q.pop();
80 j=d.v;
81 for(p=adj[j];p!=NULL;p=p->next)
82 {
83 k=p->v;
84 if(dist[k]>dist[j]+p->dist)
85 {
86 dist[k]=dist[j]+p->dist;
87 d.v=k;d.dist=dist[k];
88 q.push(d);
89 }
90 }
91 }
92 }
93 inline void Print()
94 {
95 if(dist[T]==INF)
96 printf("unreachable\n");
97 else
98 printf("%d\n",dist[T]);
99 }
100 int main()
101 {
102 Get_int(N);
103 for(int i=1;i<=N;i++)
104 {
105 printf("Case #%d: ",i);
106 Clean();
107 Read_Build();
108 Dijkstra(S);
109 Print();
110 }
111 return 0;
112 }

[题解]UVA10986 Sending email的更多相关文章

  1. uva 10986 - Sending email(最短路Dijkstra)

    题目连接:10986 - Sending email 题目大意:给出n,m,s,t,n表示有n个点,m表示有m条边,然后给出m行数据表示m条边,每条边的数据有连接两点的序号以及该边的权值,问说从点s到 ...

  2. Sending e-mail with Spring MVC---reference

    reference from:http://www.codejava.net/frameworks/spring/sending-e-mail-with-spring-mvc Table of con ...

  3. Sending e-mail with Spring MVC--转载

    原文地址:http://www.codejava.net/frameworks/spring/sending-e-mail-with-spring-mvc Table of contents: 1.S ...

  4. Sending Email from mailx Command in Linux Using Gmail’s SMTP

    The mailx or mail command in Linux is still providing service for guys like me, especially when we n ...

  5. Spring – Sending E-Mail Via Gmail SMTP Server With MailSender--reference

    Spring comes with a useful ‘org.springframework.mail.javamail.JavaMailSenderImpl‘ class to simplify ...

  6. Sending e-mail

    E-mail functionality uses the Apache Commons Email library under the hood. You can use theplay.libs. ...

  7. Sending Email In .NET Core 2.0

    Consider the following written in .NET Core 2.0. SmtpClient client = ) { UseDefaultCredentials = tru ...

  8. UVA 10896 Sending Email

    这个题目真是伤透脑筋了,一直RE,连着改了好几个版本,又是spfa,又是单调队列dijkstra+单调队列,总是不过,后来发现M开小了,双向边应该开m的两倍,悲剧啊!!!以后不管怎样,数组一定要尽量开 ...

  9. UVa 10986 - Sending email

    题目大意:网络中有n个SMTP服务器,有m条电缆将它们相连,每条电缆传输信息需要一定的时间.现在给出信息的起点和终点,计算所需的最小时间. 有权图上的单源最短路问题(Single-Source Sho ...

随机推荐

  1. 【源码阅读】vm-insert与vm-storage之间的通讯

    先说结论 vm-insert与vm-storage之间采用极其简单的通讯协议 对于简单的场景,越简单性能越高 vm-insert连接到vm-storage后,先发送字符串vminsert.02,vm- ...

  2. 桥接模式(Bridge模式)

    桥接模式的定义与特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度.通过上面的讲解,我们能很好 ...

  3. Github基于Web的编辑器

    在 GitHub 存储库中使用基于 Web 的编辑器来创建和提交代码更改. 关于 GitHub 基于 Web 的编辑器 基于 Web 的编辑器引入了全新的轻量级编辑体验,可完全在您的浏览器中运行.使用 ...

  4. zabbix安装 报错 socket '/var/lib/mysql/mysql.sock' (13)]

    安装界面提示: Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/m ...

  5. VUE3 之 组件间事件通信 - 这个系列的教程通俗易懂,适合新手

    1. 概述 相关定律告诉我们:这个世界上的任何事物之间都会存在一定联系,"城门失火,殃及池鱼"就是一个很好的例子.因此如果我们能够尽早发现这些看不见的联系,就能很好的解决更多遇见的 ...

  6. 使用Canny+hough实现钱币检测

    目录 Canny边缘提取算法实现 霍夫变换实现 参考 这个是北京邮电大学<计算机视觉>的一门作业: Canny边缘提取算法实现 首先定义一个Canny类 其init函数是: class C ...

  7. ApacheCN 人工智能知识树 v1.0

    贡献者:飞龙 版本:v1.0 最近总是有人问我,把 ApacheCN 这些资料看完一遍要用多长时间,如果你一本书一本书看的话,的确要用很长时间.但我觉得这是非常麻烦的,因为每本书的内容大部分是重复的, ...

  8. ApacheCN 大数据译文集(二) 20211206 更新

    Hadoop3 大数据分析 零.前言 一.Hadoop 简介 二.大数据分析概述 三.MapReduce 大数据处理 四.基于 Python 和 Hadoop 的科学计算和大数据分析 五.基于 R 和 ...

  9. C# 实例解释面向对象编程中的单一功能原则

    在面向对象编程中,SOLID 是五个设计原则的首字母缩写,旨在使软件设计更易于理解.灵活和可维护.这些原则是由美国软件工程师和讲师罗伯特·C·马丁(Robert Cecil Martin)提出的许多原 ...

  10. 「NOI十联测」反函数

    30pts 令(为1,)为-1: 暴力枚举每个点为起始点的路径,一条路径是合法的当且仅当路径权值和为0且路径上没有出现过负数. 将所有答案算出. 100pts 使用点分治. 要求知道经过重心root的 ...