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

poj 2982 Time Travel

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

poj 2982 Time Travel

#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <vector>#include <set>#include <deque>#include <map>#include <algorithm>#define forn(i,n) for(int i=0;i<n;i++)#define clr(a,b) memset(a,b,sizeof(a))#define ll long long#define Min(a,b) if(a>b)a=b#define MP(x,y) make_pair(x,y)#define sqr(x) ((x)*(x))using namespace std;const int inf = 1e8;int d[105][105],in[105][105];int a[105],b[105],c[105];int n,m,k;int q[1000000],mod=1000000;void spfa(){    for(int i=0;i<=n;i++)        for(int j=0;j<=m;j++) d[i][j]=inf,in[i][j]=0;    d[0][0]=0;    int l=0, r=0;    q[r++]=0;    q[r++]=0;    while(l!=r){        int x=q[l++];l%=mod;        int y=q[l++];l%=mod;        in[x][y]=0;        for(int i=1;i<=k;i++){ int nx=x+a[i]; int ny=y+b[i]; if(nx>n||ny>m||nx<0||ny<0) continue; if(d[nx][ny]>d[x][y]+c[i]){     d[nx][ny]=d[x][y]+c[i];     if(!in[nx][ny]){         in[nx][ny]=1;         q[r++]=nx;r%=mod;         q[r++]=ny;r%=mod;     } }        }    }}int main(){    while(scanf("%d%d%d",&n,&m,&k)!=EOF){        if(n==0&&m==0&&k==0) break;        for(int i=1;i<=k;i++) scanf("%d%d%d",&a[i],&b[i],&c[i]);        spfa();        if(d[n][m]==inf) puts("-1");        else printf("%dn",d[n][m]);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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