栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3463 Sightseeing

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3463 Sightseeing

#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <queue>#define MAXN 1005#define MAXM 500005#define INF 1000000000using namespace std;struct node{    int v, next, w;}edge[MAXM];int d[MAXN][2], e, n, m;int cnt[MAXN][2];int head[MAXN];bool vis[MAXN][2];void init(){    e = 0;    memset(head, -1, sizeof(head));}void insert(int x, int y, int w){    edge[e].v = y;    edge[e].w = w;    edge[e].next = head[x];    head[x] = e++;}int dijkstra(int s, int t){    int flag, u;    memset(vis, 0, sizeof(vis));    memset(cnt, 0, sizeof(cnt));    for(int i = 1; i <= n; i++)        d[i][0] = d[i][1] = INF;    cnt[s][0] = 1;    d[s][0] = 0;    for(int i = 1; i < 2 * n; i++)    {        int mini = INF;        for(int j = 1; j <= n; j++)        { if(!vis[j][0] && d[j][0] < mini) {     u = j;     flag = 0;     mini = d[j][0]; } else if(!vis[j][1] && d[j][1] < mini) {     u = j;     flag = 1;     mini = d[j][1]; }        }        if(mini == INF) break;        vis[u][flag] = 1;        for(int j = head[u] ; j != -1; j = edge[j].next)        { int w = edge[j].w; int v = edge[j].v; if(d[v][0] > mini + w) {     d[v][1] = d[v][0];     cnt[v][1] = cnt[v][0];     d[v][0] = mini + w;     cnt[v][0] = cnt[u][flag]; } else if(d[v][0] == mini + w) cnt[v][0] += cnt[u][flag]; else if(d[v][1] > mini + w) {     d[v][1] = mini + w;     cnt[v][1] = cnt[u][flag]; } else if(d[v][1] == mini + w) cnt[v][1] += cnt[u][flag];        }    }    int ans = 0;    if(d[t][1] == d[t][0] + 1) ans = cnt[t][1] + cnt[t][0];    else ans = cnt[t][0];    return ans;}int main(){    int s, t, T, x, y, w;    scanf("%d", &T);    while(T--)    {        init();        scanf("%d%d", &n, &m);        for(int i = 1; i <= m; i++)        { scanf("%d%d%d", &x, &y, &w); insert(x, y, w);        }        scanf("%d%d", &s, &t);        printf("%dn", dijkstra(s, t));    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370817.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号