找回密码
 中文实名注册
查看: 27|回复: 1

第八章最短路,闯关游戏

[复制链接]

702

主题

1094

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22146
发表于 2024-11-9 20:05:43 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include <iostream>
#include <cstring>
#include <string>
#include <queue>

using namespace std;
const int mmax = 110;
struct node {
    int en;
    int next;
}E[mmax * mmax];
int num;
int p[mmax];

void init() {
    memset(p, -1, sizeof p);
    num = 0;
}

void add(int st, int en) {
    E[num].en = en;
    E[num].next = p[st];
    p[st] = num++;
}

int w[mmax];
int value[mmax];
bool vis[mmax];
int cnt[mmax];
bool spfa(int st, int en) {
    queue<int> q;
    memset(vis, 0, sizeof vis);
    memset(value, 0, sizeof value);
    memset(cnt, 0, sizeof cnt);
    value[st] = 100 + w[st];
    q.push(st);
    ++cnt[st];
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        if (cnt[u] == en + 1) {
            continue;
        }
        ++cnt[u];
        if (cnt[u] == en + 1) {
            value[u] = 10000000;
        }
        vis[u] = 0;
        if (u == en) {
            return 1;
        }
        for (int i = p[u]; i + 1; i = E[i].next) {
            int v = E[i].en;
            if (value[v] < value[u] + w[v]) {
                value[v] = value[u] + w[v];
                if (!vis[v]) {
                    q.push(v);
                    vis[v] = 1;
                }
            }
        }
    }
    return 0;
}

int main() {
    freopen("game.in", "r", stdin);
    freopen("game.out", "w", stdout);
    int n;
       cin >> n;
    init();
    for (int i = 1; i <= n; ++i) {
        scanf("%d", &w[i]);
        int k;
        scanf("%d", &k);
        while (k--) {
            int d;
            scanf("%d", &d);
            add(i, d);
        }
    }
    if(spfa(1, n)) {
        puts("Yes");
    } else {
        puts("No");
    }
    return 0;
}

回复

使用道具 举报

5

主题

126

帖子

2196

积分

金牌会员

Rank: 6Rank: 6

积分
2196
发表于 2024-11-10 13:24:41 | 显示全部楼层
代码不对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 中文实名注册

本版积分规则

小黑屋|东台市机器人学会 ( 苏ICP备2021035350号-1;苏ICP备2021035350号-2;苏ICP备2021035350号-3 )

GMT+8, 2024-11-21 17:56 , Processed in 0.039933 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表