博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[题解]UVA10986 Sending email
阅读量:7298 次
发布时间:2019-06-30

本文共 2562 字,大约阅读时间需要 8 分钟。

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

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

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

 

这是我的实现:

1 #include 
2 #include
3 #include
4 #include
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
, 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 }
View Code

 

转载于:https://www.cnblogs.com/CQBZOIer-zyy/p/3825086.html

你可能感兴趣的文章
SQLServer2008 数据库 开启 远程 连接 设置
查看>>
嵌入式开发交叉调试技术简介
查看>>
JavaScript基础
查看>>
C#重点内容之:接口(interface)(一)网络初级示例
查看>>
dojo表格操作的简单示例(建立表格)
查看>>
div辅助线【完整版】
查看>>
ZZULIOJ 1898: 985的数字难题 【水题】
查看>>
移动tempdb导致数据库服务不能启动
查看>>
[BEC][hujiang] Lesson04 Unit1:Working life ---Reading + Listening &Grammar & Speaking
查看>>
AspNet GridView Excel 下载 Excel 导出
查看>>
习题整理,二叉树后续遍历得到指定节点到其祖先的路径
查看>>
输入数字和小数点
查看>>
CRUD全栈式编程架构之服务层的设计
查看>>
day8--socketserver作业
查看>>
JAVA自带的加密算法-MD5\SHA1\BASE64
查看>>
React + Redux 实现的个人博客
查看>>
[BZOJ1597][Usaco2008 Mar]土地购买(斜率优化)
查看>>
算法模板——平衡树Treap
查看>>
【BZOJ】1984 月下“毛景树”
查看>>
iOS 枚举器NSEnumerator
查看>>