E. Rendez-vous de Marian et Robin

E. Rendez-vous de Marian et Robin

分层图图论问题:

代码:

#include <bits/stdc++.h>
#define int long long
#define fi first 
#define se second
#define all(v) v.begin(),v.end()
using namespace std;
const int inf = 0x3f3f3f3f3f3f3f;
const int N = 4e5+5;
int n,m,k;
struct node{
    int x,w,id;
    bool operator<(const node &u)const{
        return w==u.w?x>u.x:w>u.w;
    }
};
vector<node>g[N];
int st[N];//horse
int d[N][2],dd[N][2];
int ok[N][2];

void dijkstra(){
    priority_queue<node>pq;
    for(int i=1;i<=n;i++){
        d[i][0] = d[i][1] = inf;
    }
    pq.push({1LL,d[1][st[1]] = 0,st[1]});
    while(!pq.empty()){
        int x = pq.top().x;
        int w = pq.top().w;
        int op = pq.top().id;
        pq.pop();
        if(ok[x][op])continue;
        ok[x][op] = 1;
        for(const auto &[y,ww,opp]:g[x]){
            if(op){
                if(d[y][1]>d[x][1]+ww/2LL){
                    d[y][1] = d[x][1] + ww/2LL;
                    pq.push({y,d[y][1],1LL});
                }
            }
            else if(st[y]){
                if(d[y][1]>d[x][0] + ww){
                    d[y][1] = d[x][0] + ww;
                    pq.push({y,d[y][1],1LL});
                }
            }
            else{
                if(d[y][0]>d[x][0]+ww){
                    d[y][0] = d[x][0] + ww;
                    pq.push({y,d[y][0],0LL});
                }
            }
        }
    }

    return;

}

void dijkstra1(){
    priority_queue<node>pq;
    for(int i=1;i<=n;i++){
        dd[i][0] = dd[i][1] = inf;
    }
    pq.push({n,dd[n][st[n]] = 0,st[n]});
    while(!pq.empty()){
        int x = pq.top().x;
        int w = pq.top().w;
        int op = pq.top().id;
        pq.pop();
        if(ok[x][op])continue;
        ok[x][op] = 1;
        for(const auto &[y,ww,opp]:g[x]){
            if(op){
                if(dd[y][1]>dd[x][1]+ww/2LL){
                    dd[y][1] = dd[x][1] + ww/2LL;
                    pq.push({y,dd[y][1],1LL});
                }
            }
            else if(st[y]){
                if(dd[y][1]>dd[x][0] + ww){
                    dd[y][1] = dd[x][0] + ww;
                    pq.push({y,dd[y][1],1LL});
                }
            }
            else{
                if(dd[y][0]>dd[x][0]+ww){
                    dd[y][0] = dd[x][0] + ww;
                    pq.push({y,dd[y][0],0LL});
                }
            }
        }
    }

    return;

}

void solve(){
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++){
        g[i].clear();
        st[i] = 0;
    }
    for(int i=1;i<=k;i++){
        int x;cin>>x;
        st[x] = 1;
    }

    for(int i=1;i<=n;i++){
        ok[i][0] = ok[i][1] = 0;
    }

    for(int i=1;i<=m;i++){
        int x,y,w;cin>>x>>y>>w;
        g[x].push_back({y,w});
        g[y].push_back({x,w});
    }

    dijkstra();

    for(int i=1;i<=n;i++){
        ok[i][0] = ok[i][1] = 0;
    }

    dijkstra1();

    int ans = inf;
    for(int i=1;i<=n;i++){
        int res = max(min(d[i][0],d[i][1]),min(dd[i][0],dd[i][1]));
        ans = min(ans,res);
    }

    if(ans>=inf/2LL){
        cout<<-1<<"\n";
        return;
    }
    else{
        cout<<ans<<"\n";
        return;
    }

    
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T = 1;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

Le chapitre clé dans le roman Chéri de Colette est le chapitre 10, intitulé « L'adieu ». Ce chapitre marque la fin de la relation entre Léa de Lonval, une courtisane âgée, et Fred Peloux, un jeune homme de 25 ans surnommé Chéri. Le chapitre débute avec Chéri qui arrive chez Léa pour leur rendez-vous hebdomadaire. Cependant, Léa annonce à Chéri qu'elle a décidé de mettre fin à leur relation qui a duré six ans. Cette nouvelle bouleverse Chéri qui ne peut pas imaginer sa vie sans Léa. Léa explique à Chéri qu'elle a accepté de se marier avec un homme plus âgé et qu'elle partira bientôt pour la campagne. Le dialogue entre Léa et Chéri est passionné et empli de tristesse. Léa se montre ferme dans sa décision de mettre fin à leur relation, tandis que Chéri est inconsolable. Il réalise soudainement qu'il a pris Léa pour acquise et qu'il n'a jamais envisagé la fin de leur histoire. Le chapitre se termine avec Chéri quittant la maison de Léa en larmes, réalisant que sa jeunesse est finie et qu'il devra désormais affronter la vie sans son amour de toujours. Ce chapitre est crucial car il marque la fin de l'histoire d'amour entre Léa et Chéri, mais aussi la fin de la jeunesse de Chéri. À travers son personnage, Colette explore la thématique de la fin de la jeunesse et de la beauté. Chéri réalise que sa jeunesse ne sera plus éternelle et que tout ce qu'il a connu jusqu'à présent ne sera plus. Ce chapitre symbolise également la fin de l'ère des courtisanes et de la haute société parisienne de la Belle Époque. En conclusion, le chapitre 10 de Chéri est un moment clé dans le roman, symbolisant la fin d'une époque et la fin de l'histoire d'amour entre Léa et Chéri. Colette explore la thématique de la fin de la jeunesse et de la beauté à travers son personnage principal, Chéri, qui réalise que la vie ne sera plus jamais la même.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值