uva 1569 - Multiple(最短路)

原创 2015年10月30日 23:45:50

题目链接:uva 1569 - Multiple

代码

#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>

using namespace std;
const int maxn = 5005;
const int inf = 0x3f3f3f3f;

int N, M, A[maxn], D[maxn], P[maxn], W[maxn];

void put (int u) {
    if (u == 0) return;
    put(P[u]);
    printf("%d", W[u]);
}

bool bfs () {

    queue<int> que;

    memset(D, 0, sizeof(D));
    for (int i = 0; i < M; i++) {
        if (A[i] == 0) continue;
        int t = A[i] % N;
        P[t] = 0, W[t] = A[i], D[t] = 1;
        que.push(t);
    }

    while (!que.empty()) {
        int u = que.front();
        que.pop();
        if (u == 0) {
            put(P[u]);
            printf("%d\n", W[u]);
            return true;
        }

        for (int i = 0; i < M; i++) {
            int v = (u * 10 + A[i]) % N;
            if (!D[v]) {
                D[v] = 1;
                W[v] = A[i];
                P[v] = u;
                que.push(v);
            }
        }
    }
    return false;
}

int main () {
    while (scanf("%d", &N) == 1) {
        scanf("%d", &M);
        int x;
        memset(A, 0, sizeof(A));
        for (int i = 0; i < M; i++)
            scanf("%d", &A[i]);
        sort(A, A + M);
        if (N == 0 || !bfs())
            printf("0\n");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 1569 - 方格取数(2) 二分图最大点权独立集(构图最大流解)

题意:                       给你一个m*n的格子的棋盘,每个格子里面有一个非负数。从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并...
  • kk303
  • kk303
  • 2013年08月24日 18:31
  • 1608

DijkStra最短路径的C++实现与输出路径

一个点(源点)到其余各个顶点的最短路径。也叫做“单源最短路径”Dijkstra。 Dijkstra的主要思想:每次找到离源点最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路...
  • u012577585
  • u012577585
  • 2015年04月13日 19:34
  • 4191

最短路算法详解(Dijkstra/SPFA/Floyd)

转自:http://blog.csdn.net/murmured/article/details/19281031 一、Dijkstra Dijkstra单源最短路算法,即计算从起点出发到每个...
  • acm_1361677193
  • acm_1361677193
  • 2015年09月04日 18:23
  • 3486

最短路+字典序最小+输出路径(Ideal Path,UVA 1599)

题目链接: https://vjudge.net/problem/UVA-1599 在满足最短路的条件下,字典序最小,输出最短距离以及路径。 一些思考: 紫书上说可以只用一次BFS来完成...
  • xl2015190026
  • xl2015190026
  • 2017年06月06日 13:33
  • 343

UVA11367 最短路 蓝书练习题

题意:n个城市,m条无向边,每个城市油价不一样。q次询问,给定起点s,终点e,求问最便宜路径。 油箱一开始设为0,假设每单位距离消耗1L汽油。 分析:dijkstra变形,设d[u][fue...
  • computer_user
  • computer_user
  • 2017年12月18日 17:09
  • 26

大火蔓延的迷宫,白书P307Uva11624(BFS求最短路)

本题是非常好的一道题目。在常规的最短路题目中,增加了时间的概念,并且设置了火焰且可燃烧扩展。虽然看起来复杂,其实火焰的燃烧扩展本身也是一个最短路问题,只不过有多个源点而已。但是根据BFS的特点,开始时...
  • NCUscienceZ
  • NCUscienceZ
  • 2017年11月10日 00:04
  • 135

UVa 10806 Dijkstra, Dijkstra (无向图+最小费用最大流+最短路:)

参考:http://www.cnblogs.com/scau20110726/archive/2012/12/09/2810654.html 题意:      固定起点1和终点n,从1到n,再从n回到...
  • Slow_Wakler
  • Slow_Wakler
  • 2015年08月07日 20:22
  • 2273

UVa10048_Audiophobia(最短路/floyd)(小白书图论专题)

解题报告 题意: 求所有路中最大分贝最小的路。 思路: 类似floyd算法的思想,u->v可以有另外一点k,通过u->k->v来走,拿u->k和k->v的最大值和u->v比较,存下最小的值。 #inc...
  • u013320038
  • u013320038
  • 2014年08月22日 00:12
  • 8060

uva 10537 - The Toll! Revisited (逆向思维+最短路+输出字典序最小路径)

Problem G Toll! Revisited Input: Standard Input Output: Standard Output Time Limit: 1 Second   ...
  • u010228612
  • u010228612
  • 2014年06月29日 20:09
  • 740

UVA 1599 Ideal Path【双向bfs+非简单图的最短路】

Ideal Path  UVA - 1599  思路: 从终点开始倒着bfs一次,得到每个点到终点的距离,然后从起点开始,按照每次距离减1的方法寻找接下来的点的编号。按照颜色...
  • Puyar_
  • Puyar_
  • 2017年07月09日 21:26
  • 87
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:uva 1569 - Multiple(最短路)
举报原因:
原因补充:

(最多只允许输入30个字)