文章

3

粉丝

181

获赞

1

访问

22.1k

头像
判断条件修改
P1224 北京大学机考题
发布于2021年4月23日 22:36
阅读数 8.3k

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <cmath>
#define inf 0x3f3f3f3f
#define MOD 100000
using namespace std;

const int maxn = 600+6;

struct Edge{
    int u;
    int v;
    int w;
    Edge(int u,int v,int w):u(u),v(v),w(w){}
};
vector<Edge> edge[maxn];
bool visit[maxn];
int dis[maxn];
int path[maxn];
int n,m;
int sup[maxn];
int flag[maxn];

void init(){
    for(int i=0;i<maxn;i++){
        edge[i].clear();
    }
    memset(visit,0,sizeof(visit));
    memset(dis,0x3f,sizeof(dis));
    memset(path,0,sizeof(path));
    memset(sup,0,sizeof(sup));
    memset(flag,0,sizeof(flag));
}

void addedge(int u,int v,int w){
    Edge temp(u,v,w);
    edge[u].push_back(temp);
}

void spfa(int s){
    queue<int> q;
    dis[s] = 0;
    q.push(s);
    while(!q.empty()){
        int now = q.front();
        q.pop...
登录查看完整内容


登录后发布评论

2 条评论
Dear_Mr_He
2022年7月4日 16:40

这个方法不太对吧?

比如数据:

3
3
1 2 200
1 3 5
2 3 10
1 2 2

路线应该是1->3->2,花费的最少时间为15,而你这种方法的路线是直接1->2,花费了200的时间。。

赞(1)

admin : 回复 Dear_Mr_He: 数据已加强,加上了极限数据,以前的代码可能会超时

2022年7月4日 20:57