zoukankan      html  css  js  c++  java
  • jQuery火箭图标返回顶部代码

    链接

    其实在博客园里写题解都挺应付的都是在洛谷写了之后

    挑一部分粘过来

    在洛谷写的也都是废话,是为了凑篇幅

    主要就是代码

    大体思路就一提

    这题贪心不行废话

    跑m遍SPFA更新最小值

    注意数组记得清空

    The Last:

    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N = 5005;
    int cnt, head[N << 1], n, m, x, minn = 0x3f3f3f3f, C[N], t, s, dis[N];
    bool vis[N];
    struct node{
        int nxt, to, d, w;
    }e[N << 1];
    int read() {
        int s = 0, w = 1;
        char ch = getchar();
        while(!isdigit(ch)) {if(ch == '-') w = -1; ch = getchar();}
        while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = getchar();}
        return s * w;
    }
    void add(int x, int y, int w, int d) {
        e[++cnt].nxt = head[x];
        e[cnt].to = y;
        e[cnt].w = w;
        e[cnt].d = d;
        head[x] = cnt;
    }
    void spfa (int ww) {
        queue<int> q;
        memset(dis, 50, sizeof(dis));
        memset(vis, 0, sizeof(vis));
        vis[1] = 1;
        q.push(1);
        dis[1] = 0;
        while (!q.empty()) {
            int he = q.front();
            q.pop();
            vis[he] = 0;
            for (int i = head[he]; i ;i = e[i].nxt) {
                if (dis[e[i].to] > dis[he] + e[i].d && e[i].w >= ww) {
                    dis[e[i].to] = dis[he] + e[i].d;
                    if (!vis[e[i].to]) {
                        vis[e[i].to] = 1;
                        q.push(e[i].to);
                    }
                }
            }
        }
    }
    int main() {
        n = read(), m = read(), x = read();
        for(int i = 1; i <= m; i++) {
            int x, y, d, l;
            x = read(), y = read(), d = read(), l = read();
            add(x, y, l, d), add(y, x, l, d);
            C[i] = l;
        }
    //    for(int i = 1; i <= n; i++)
    //        printf("%d ", e[i].w);
    //    printf("
    ");
    //    sort(C + 1, C + 1 + m);
        for(int i = 1; i <= m; i++) {
            spfa(C[i]);
            minn = min(minn, (dis[n] + x / C[i]));
        }
    //    for(int i = 1; i <= n; i++)
    //        printf("%d ", dis[i]);
    //    printf("
    ");
        printf("%d
    ", minn);
        return 0;
    }

    谢谢收看,祝身体健康!

  • 相关阅读:
    Spring IOC、AOP实现源码分析
    mybatis源码分析
    Android 屏幕适配
    读取sd卡下图片,由图片路径转换为bitmap
    SVN的trunk、branch、tag(二)
    SVN中tag branch trunk用法详解
    SVN使用教程之——分支、合并
    svn回滚版本2
    svn回滚版本1
    TortoiseSVN中分支和合并实践
  • 原文地址:https://www.cnblogs.com/yanxiujie/p/11690145.html
Copyright © 2011-2022 走看看