zoukankan      html  css  js  c++  java
  • 【POJ】1062 昂贵的聘礼 (最短路)

    题目

    传送门:QWQ

    分析

    最短路显然,但不好搞地位等级。。。。。

    地位等级不好搞?那么就暴力。。

    枚举我们允许的地位等级,跑最短路。

    所以$ n^2logn $出100什么鬼啊,很有迷惑性啊

     还有4篇cf没补博客好慌啊

    代码

    细节不少,WA了好几发

    //#include <bits/stdc++.h>
    #include <cstdio>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <cstring>
    using namespace std;
    const int maxn=1200, INF=1e9;
    struct Edge{
        int u,v,dis;
    };
    vector<Edge> edges; vector<int> G[maxn];
    void Addedge(int u,int v,int dis){
        edges.push_back((Edge){u,v,dis}); G[u].push_back(edges.size()-1);
    }
    int l[maxn], L, R, val[maxn];
    struct HeapNode{
        int x,dis;
        bool operator < (const HeapNode& a) const{ return dis>a.dis; }
    };
    priority_queue<HeapNode> que;
    int d[maxn],vis[maxn], n;
    int dijkstra(int s ){
        if(l[s]<L || l[s]>R) return val[s];
        memset(d,127,sizeof(d)); memset(vis,0,sizeof(vis));
        d[s]=0; que.push((HeapNode){s,0}); //vis[s]=1;
        while(!que.empty()){
            HeapNode x=que.top(); que.pop();
            if(vis[x.x]) continue; vis[x.x]=1;
            int u=x.x;
            for(int i=0;i<G[u].size();i++){
                Edge& e=edges[G[u][i]];
                if(l[e.v]>=L && l[e.v]<=R && d[e.v]>d[u]+e.dis){
                    d[e.v]=d[u]+e.dis;
                    que.push((HeapNode){e.v,d[e.v]}); 
                }
            }
        } 
        int ans=1e9;
        for(int i=1;i<=n;i++){
            ans=min(ans,d[i]+val[i]);
        }
        return ans;
    }
    int main(){
        int  m; scanf("%d%d",&m,&n);
        int x, q=0,b,c;
        for(int i=1;i<=n;i++){
            scanf("%d%d%d",&val[i],&l[i],&x);
            while(x--){
                scanf("%d%d",&b,&c); Addedge(i,b,c);
            }
            q=max(q,l[i]);
        }
        int ans=INF;
        for(int i=1;i<=max(q-m,n);i++){
            L=i; R=i+m;
            ans=min(ans,dijkstra(1)); 
        }
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    Objective-C代码规范
    Http中Get/Post请求区别
    使用Vitamio打造自己的Android万能播放器
    Vitamio
    图片瀑布流
    TCP与UDP
    SQLite基本操作总结
    IOS文件操作的两种方式:NSFileManager操作和流操作
    JSON和XML
    一些iOS常用的第三方库和控件及第三方框架还有动画
  • 原文地址:https://www.cnblogs.com/noblex/p/9271577.html
Copyright © 2011-2022 走看看