[luogu3393 逃离僵尸岛]

来源:互联网 发布:红辣椒电影数据分析 编辑:程序博客网 时间:2024/04/26 20:06

题目链接

题解:实力搜索……

#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <climits>using namespace std;#define INF LLONG_MAX>>1const int M=100005;int n,m,t,k,s,P,Q;long long d[M];int head[M];long long mark[M];int dr[M],x[2*M],y[2*M];bool vis[M];struct edge{    int to,next,val;}e[M*4];queue <int> q;void add(int i,int j,int w){    e[t].to=j;    e[t].val=w;    e[t].next=head[i];    head[i]=t++;}void init(){    t=0;    memset(head,-1,sizeof(head));    cin>>n>>m>>k>>s>>P>>Q;    for(int i=1;i<=k;i++)    scanf("%d",&dr[i]),mark[dr[i]]=INF;    for(int i=1;i<=m;i++)    {        scanf("%d%d",&x[i],&y[i]);        add(x[i],y[i],1);        add(y[i],x[i],1);    }}void ready(int s){    for(int i=1;i<=n;i++)    vis[i]=0,d[i]=INF;    d[s]=0;vis[s]=1;}void bfs(int x){    ready(x);    q.push(x);    while(!q.empty())    {        int u=q.front();q.pop();        for(int i=head[u];i!=-1;i=e[i].next){            int v=e[i].to;            if(!vis[v]&&mark[v]!=INF){                d[v]=d[u]+1;                vis[v]=1;                mark[v]=Q;                if(d[v]<=s-1)                q.push(v);            }        }    }}void cj(){    t=0;    memset(head,-1,sizeof(head));    for(int i=1;i<=m;i++)    {        long long sto=mark[x[i]]+mark[y[i]];        if(sto>=INF) continue;        add(x[i],y[i],int(sto));        add(y[i],x[i],int(sto));    }}void spfa(int s){    ready(s);q.push(s);    while(!q.empty())    {        int u=q.front();q.pop();vis[u]=0;        for(int i=head[u];i!=-1;i=e[i].next){            int v=e[i].to;            if(d[v]>d[u]+e[i].val)            {                d[v]=d[u]+e[i].val;                if(!vis[v]){                    vis[v]=1;                    q.push(v);                }            }        }    }}void work(){    for(int i=1;i<=k;i++)    bfs(dr[i]);    for(int i=1;i<=n;i++)    if(mark[i]==0) mark[i]=P;    mark[1]=mark[n]=0;    cj();spfa(1);    cout<<(d[n]>>1)<<endl;}int main(){    init();    work();    return 0;}
0 0
原创粉丝点击