hdu3665Seaside 最短路水题

//给一个图,有些点近海,问从0点到近海点的最短路
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 100 ;
const int inf = 0x3f3f3f3f ;
int map[maxn][maxn] ;
int dis[maxn] ;
int vis[maxn] ;
int n , m ,pi;
int p[maxn] ;
void dijkstra()
{
    memset(vis , 0 , sizeof(vis)) ;
    for(int i = 1;i <= n;i++)
    dis[i] = inf ;
    dis[0] = 0 ;
    for(int i = 1;i <=n;i++)
    {
        int mi = inf ;
        int pos ;
        for(int j = 0;j <= n;j++)
        if(!vis[j] && dis[j] < mi)
        mi = dis[pos = j] ;
        vis[pos] = 1;
        for(int j = 1;j <= n;j++)
        dis[j] = min(dis[j] , dis[pos] + map[pos][j]) ;
    }
}
int main()
{
    while(~scanf("%d" ,&n))
    {
        for(int i = 0;i <= n;i++)
        for(int j = 0;j <= n;j++)
        map[i][j] = inf ;
        for(int i = 0;i < n;i++)
        {
            scanf("%d%d" ,&m ,&pi)  ;
            p[i] = pi ;
            while(m--)
            {
                int v , w;
                scanf("%d%d" ,&v , &w);
                map[i][v] = map[v][i] = w ;
            }
        }
        dijkstra() ;
        int ans = inf ;
        for(int i = 1;i <= n;i++)
        if(p[i])
        ans = min(ans , dis[i]) ;
        printf("%d\n" , ans) ;
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 00:29:17

hdu3665Seaside 最短路水题的相关文章

poj2253Frogger 最短路水题

//一个无向图,求从起点到终点的所经过的路径中的最大值最小 //最短路,更新的时候dis[i] = min(dis[i] , max(dis[u] , map[u][i])); #include<cstdio> #include<cstring> #include<iostream> #include<queue> #include<cmath> using namespace std ; const int maxn = 210 ; const

最短路水题 HDU 1874畅通工程续

Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input 本题目包含多组数据,请处理到文件结束. 每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目.城镇分别以0-N-1编号.

【Floyd(并非水题orz)】BZOJ4093-[Usaco2013 Dec]Vacation Planning

最近刷水太多标注一下防止它淹没在silver的水题中--我成为了本题,第一个T掉的人QAQ [题目大意] Bovinia设计了连接N (1 < = N < = 20,000)个农场的航班.对于任何航班,指定了其中的k个农场作为枢纽. (1 < = K <= 200 , K < = N). 目前,共有M种单向航班( 1 < = M < = 20,000 ),第i个航班从农场u_i至农场v_i花费d_i ( 1 < = d_i < =10,000 )美元.

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive

HDU 1874 畅通公程续 (最短路 水)

Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离. Input 本题目包含多组数据,请处理到文件结束. 每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目.城镇分别以

2015南阳CCPC L - Huatuo&#39;s Medicine 水题

L - Huatuo's Medicine Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Huatuo was a famous doctor. He use identical bottles to carry the medicine. There are different types of medicine. Huatuo put medicines into the bottles and chain these b

sdut 2841 Bit Problem (水题)

题目 贴这个题是因为看题解有更简单的方法, 我做的时候是直接算的, 也很简单. 贴一下题解吧: 如果一个整数不等于 0,那么该整数的二进制表示中至少有一位是 1. 这个题结果可以直接输出 x - (x&(x-1)); 因为x-1 之后二进制下,就是最右边的1变成了0, 最右边的1的 右边所有的0变成了1, 不影响最左边. 我的代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4

sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)

n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my inst

杭电(hdu)2053 Switch Game 水题

Switch Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13113    Accepted Submission(s): 7970 Problem Description There are many lamps in a line. All of them are off at first. A series of o