NEFU 1132 分层图最短路

点击打开链接

题意:给出起点和终点,然后有k次机会使得路径上的某些路径的值减半,问从起点到终点的最小花费

思路:很明显的分层图最短路嘛,自己也没有去研究算法的含义,队友和我说就是将图分成了n层,然后将这个可以减半的费用连接这n层,然后跑个类似的最短了就可以了,今天改了一个模版,改成了自己喜欢的风格,明天在做几道分层图在看看概念把,这题就是个模版题

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair P;
const int inf=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3fll;
const int maxn=10010;
struct edge{
    int to,cost;
    edge(int a,int b){to=a;cost=b;}
};
vectorG[maxn];
int vis[maxn],dis[maxn],n,m,k;
int dijkstra(int s,int t){
    memset(dis,inf,sizeof(dis));
    memset(vis,0,sizeof(vis));
    priority_queue, greater

>que; dis[s]=0;que.push(P(0,s)); while (!que.empty()){ P p=que.top();que.pop(); int v=p.second; if (vis[v]) continue; vis[v]=1; for(int i=0;i


你可能感兴趣的:(图论,最短路,线段树)