「日常训练」「小专题·图论」 昂贵的聘礼(1-4)

题意

分析

dijkstra的变形,问题在于把题目的逻辑转化成图。
这个图 ( V , E ) 是这样的:V是各个人(礼物+承诺+探险家),E是花费的金额。如果能够换到,就连一条边。
这样一来,对 [ l v 1 m , l v 1 ] [ l v 1 , l v 1 + m ] 的各个区间分别求最短路(m次),即可求出答案。
这道题目建模是关键。图论的特征。

代码

// Origin:
// Theme: Graph Theory (Basic)
// Date: 080618
// Author: Sam X

//#include <bits/stdc++.h>
#include <iostream>
#include <utility>
#include <iomanip>
#include <cstring>
#include <cmath>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO                  \
    ios::sync_with_stdio(false); \
    cin.tie(0);                  \
    cout.tie(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ul;
typedef pair<int,int> pi;
typedef pair<int,pi> pii;

int main()
{
    int m,n; cin>>m>>n;
    int dis[105][105];
    int lv[105];
    memset(dis,0x3f,sizeof(dis));
    rep(i,1,n)
    {
        dis[i][i]=0;
        int p,l,x; cin>>p>>l>>x;
        dis[0][i]=p;
        lv[i]=l;
        rep(j,1,x)
        {
            int t,v; cin>>t>>v;
            dis[t][i]=v;
        }
    }
    int ans=0x3f3f3f3f;
    rep(llv,lv[1]-m,lv[1])
    {
        int rlv=llv+m,d[105];
        memset(d,0x3f,sizeof(d));
        d[0]=0;
        int mind=d[1],x=-1;
        bool vis[105];
        ZERO(vis);
        //cout<<"***\nllv="<<llv<<" rlv="<<rlv<<endl;
        rep(i,0,n)
        {
            mind=0x3f3f3f3f;
            x=-1;
            rep(j,0,n) if(!vis[j] && d[j]<mind) mind=d[x=j];
            if(x==-1) break;
            //cout<<"x="<<x<<endl;
            vis[x]=true;
            rep(j,0,n)
            {
                if(j==0 || (lv[j]>=llv && lv[j]<=rlv))
                {
                    d[j]=min(d[j],d[x]+dis[x][j]);
                }
            }
            //rep(j,0,n) cout<<d[j]<<" "; cout<<endl;
        }
        ans=min(ans,d[1]);
    }
    cout<<ans<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_17632793/article/details/81460137
1-4