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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[vijos1013] 强墙 /[uva393] 房间最短路问题

题目描述在一个长宽均为10,入口出口分别为(0,5)、(10,5)的房间里,有几堵墙,每堵墙上有两个缺口,求入口到出口的最短路经。 输入格式第一排为n(n<=20),墙的数目。 接下来n排,每排5...

UVA 10342 - Always Late 次短路

题意:给你一个无向图,要你求出任意两点的次短路。注意次短路一定要比最短路长。思路:第一次做次短路的题。先求出任意两点间的最短路,dfs求次短路,如果当前次短路的长度<=已经走过的路的长度+接下来到终点...
  • s_h_r
  • s_h_r
  • 2015-09-17 11:25
  • 662

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

参考:http://www.cnblogs.com/scau20110726/archive/2012/12/09/2810654.html 题意:      固定起点1和终点n,从1到n,再从n回到...

[最短路]uva 12295 Optimal Symmetric Paths

/** uva 12295 Optimal Symmetric Paths__DP 正解,最短路 */ #include #include #include #include #include...

uva 11374 - Airport Express 机场快线 (单源最短路+枚举)

UVA 11374 Airport Express 机场快线

UVa 10269 & ZOJ 1232 Adventure of Super Mario(最短路+DP)

题目链接 题目大意:     马里奥在救出公主后要从城堡回家。有A个村庄,B个城堡,他现在在城堡A+B,要回到家1中,给出一些地点之间的距离。不过马里奥可以进行K次快速奔跑,每次不超过距离L,而...

UVA 658 It's not a Bug, it's a Feature! (特殊图最短路)

题意: 修补bug,会引入新的bug。n(n“-”表示不存在,“+”表示存在,“0”表示不变)。每个补丁有一个时间,用最少的时间变得没有bug。一个补丁可用多次。 要满足一串的状态才能变成二串的状态...

UVA 10917 - Walk Through the Forest(最短路`dijksta+DP)

题目: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=74214#problem/B 题意: n个点,m条无向边,求出从起点1到终点...

UVa 10917 Walk Through the Forest(最短路+DP)

求出办公室到每一点的最短路d[i],然后记忆话搜索,dp[i]由和i点相邻且d[j] 代码: #include #include #include #include #includ...

UVA 10806 Dijkstra, Dijkstra. (费用流||最短路)

大意:从1到n然后再返回到1,每条路都只能走一次,最短路是多少。 思路1:可以用费用流建图,因为起始点和终点可以走两次所以源汇点流量为2.如果能返回的话肯定flow是>=2的,才能构成回路。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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