问题描述:
A 国正面临着一场残酷的战争,城市被支持不同领导的两股势力占据,作为一个商人,M
先生并不太关心政治,但是他知道局势很严重,他希望你能救他出去。
M 先生说:“为了安全起见,我们的路线最多只能包含一条连接两股不同势力城市的道
路”。M 先生想知道最快多久能到达目的地。
数据输入:
第一行N(2<=N<=600),代表城市个数。第二行M(0<=M<=10000),代表道路条数。
接下来M 行每行三个数A,B,T。代表一条从城市A 到城市B 的路(双向边)需要耗时
T(1<=T<=1500)。
接下来一行N 个数,这些数只会是1 或者2,第i 个数字代表第i 个城市属于第几股势
力。
为了简化问题,我们假设开始时M 先生在城市1,目的地是城市2,城市1 属于第1 股
势力,城市2 属于第2 股势力。
道路是双向的。数据保证没有重边。
结果输出:
输出最少需要的时间。如果无法到达则输出-1。
输入示例: 输出示例:
2
1
1 2 100
1 2
100
3
3
1 2 100
1 3 40
2 3 50
1 2 1
90
5
5
3 1 200
5 3 150
2 5 160
4 3 170
4 2 170
1 2 2 2 1
540

并查集+dijstra算法

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#define inf 0xffffff
int g[][];
struct ufs
{
int parent[];
}u;
int find(int e)
{
if(e!=u.parent[e])
u.parent[e]=find(u.parent[e]);
return u.parent[e];
}
void funion(int i,int j)
{
u.parent[i]=j;
}
void dijstra(int n)
{
int lowcost[],used[],min,i,j,k;
memset(used,,sizeof(used));
for(i=;i<=n;i++)
lowcost[i]=g[i][];
used[]=;
for(i=;i<n;i++)
{
j=;
min=inf;
for(k=;k<=n;k++)
{
if(lowcost[k]<min&&!used[k])
min=lowcost[k],
j=k;
}
used[j]=;
for(k=;k<=n;k++)
{
int t1=find(k),t2=find(j),t3=find();
if(t1==t3&&t2!=t1)//横跨两股势力
{
}
else
{
if(g[k][j]+lowcost[j]<lowcost[k]&&!used[k])
lowcost[k]=g[k][]=g[][k]=g[k][j]+lowcost[j];
}
}
}
}
int main()
{
int n,m,i,a,b,j,t;
scanf("%d %d",&n,&m);
for(i=;i<=n;i++)
u.parent[i]=i;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
g[i][j]=inf;
g[i][i]=;
}
for(i=;i<=m;i++)
{
scanf("%d %d %d",&a,&b,&t);
g[a][b]=g[b][a]=t;
}
for(i=;i<=n;i++)
{
scanf("%d",&a);
if(a==)
funion(i,);
else if(a==)
funion(i,);
}
dijstra(n);
if(g[][]==inf)
printf("-1\n");
else
printf("%d\n",g[][]); return ;
}
5910 031202110 M.cpp AC|AC|AC|AC|AC|AC|AC|AC|AC|AC| 77MS 1660KB  

数据结构与算法实验题7.1 M 商人的求救的更多相关文章

  1. 数据结构与算法实验题 7.1 M 商人的求救

    问题描述: A 国正面临着一场残酷的战争,城市被支持不同领导的两股势力占据,作为一个商人,M先生并不太关心政治,但是他知道局势很严重,他希望你能救他出去.M 先生说:"为了安全起见,我们的路 ...

  2. 数据结构与算法实验题 6.1 s_sin’s bonus

    数据结构与算法实验题 6.1 s_sin's bonus ★实验任务 正如你所知道的 s_sin 是一个非常贪玩的人 QAQ(如果你非常讨厌他请直接从第二段开 始看),并且令人感到非常遗憾的是,他是一 ...

  3. 数据结构与算法实验题 9.1 K 歌 DFS+剪枝

    数据结构与算法实验题 K 歌 ★实验任务 3* n 个人(标号1~ 3 * n )分成 n 组 K 歌.有 m 个 3 人组合,每个组合都对应一个分数,你能算出最大能够得到的总分数么? ★数据输入 输 ...

  4. 数据结构与算法实验题 4.2 Who is the strongest

    数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...

  5. HDU 3791 二叉搜索树 (数据结构与算法实验题 10.2 小明) BST

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第 ...

  6. 数据结构与算法实验题6.1 s_sin’s bonus byFZuer

    玩家从n 个点n-1 条边的图,从节点1 丢下一个小球,小球将由于重力作用向下落,而从小球所在点延伸出的每一条边有一个值pi 为小球通过该条边的概率(注意从同一个节点向下延伸的所有边的pi 的和可以小 ...

  7. DS实验题 Dijkstra算法

    参考:Dijkstra算法 数据结构来到了图论这一章节,网络中的路由算法基本都和图论相关.于是在拿到DS的实验题的时候,决定看下久负盛名的Dijkstra算法. Dijkstra的经典应用是开放最短路 ...

  8. 大公司面试经典数据结构与算法题C#/Java解答

    几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表 ...

  9. 【算法】数据结构与算法基础总览(中)——刷Leetcode等算法题时一些很实用的jdk辅助方法锦集

    最近重新学习数据结构与算法以及刷leetcode算法题时,发现不少jdk自带的方法可以提升刷题的效率.这些小技巧不仅仅对刷算法题带来便利,对我们平时开发也是很有帮助的.本文以java语言为基础,记录了 ...

随机推荐

  1. Javascript基础系列之(五)条件语句(if条件语句)

    if 是flash的常用语法之一,其格式如下 if(coditon) statement1 (else statement2) 其中,coditon可以是任何表达式,甚至不比是真正的布尔值,因为Jav ...

  2. AngularJS开发指南10:AngularJS依赖注入的详解

    依赖注入是一种软件设计模式,用来处理代码的依赖关系. 一般来说有三种方法让函数获得它需要的依赖: 它的依赖是能被创建的,一般用new操作符就行. 能够通过全局变量查找依赖. 依赖能在需要时被导入. 前 ...

  3. iOS开发之UITextView,设置textView的行间距及placeholder

    一.设置textView的行间距 1.如果只是静态显示textView的内容为设置的行间距,执行如下代码: //    textview 改变字体的行间距     NSMutableParagraph ...

  4. Qt学习思考

    对各个部件基本了解,初步理解GUI应用程序的创建 2D图形文字绘制,3D图形(openGL)等 模型/视图框架编程,处理复杂的数据 多媒体框架 数据库,xml,文件读写等 网络编程 做出比较美观的界面 ...

  5. 如何解决mysql数据库X小时无连接自动关闭

    windows下打开my.ini,增加: interactive_timeout=28800000 wait_timeout=28800000 专家解答:MySQL是一个小型关系型数据库管理系统,由于 ...

  6. 什么是谷歌loon计划

    互联网服务已经与人类的生活密不可分,但受地理环境限制,目前全球只有三分之一的幸运儿能够体验到这种服务.为了让更多的人感受互联网,Google推出了一项名为“Project Loon”的计划,利用氢气球 ...

  7. NOI题库

    07:机器翻译 总时间限制: 1000ms 内存限制: 65536kB 描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原理很简单,它只是从头到尾,依次将每个 ...

  8. 【uoj2】 NOI2014—起床困难综合症

    http://uoj.ac/problem/2 (题目链接) 题意 给出n个操作包括And,or,xor,求从0~m中的一个数使得经过这些操作后得到的值最大. Solution 大水题..贪心由高到低 ...

  9. POJ 2752 Seek the Name, Seek the Fame

    传送门 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14761   Accepted: 7407 Description ...

  10. hihoCoder 1195 高斯消元.一

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:喂不得了啦,那边便利店的薯片半价了! 小Hi:啥?! 小Ho:那边的便利店在打折促销啊. 小Hi:走走走, ...