网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月10日漏签0天
acm吧 关注:26,544贴子:48,332
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回acm吧
>0< 加载中...

求大神指点

  • 只看楼主
  • 收藏

  • 回复
  • 莫晓唐
  • 路人甲
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#include <cstring>
const int INF=0x7fffffff;
using namespace std;
struct stNode{
int p;
int nLen;int cost;
bool operator<(const stNode &x)const{
return (nLen>x.nLen);}
};
vector <stNode> vG[200];
int nD[200],nP[200];
priority_queue<stNode> q;
int nN,nS,nT;
int main(int argc, char** argv) {
int nM;
while (scanf("%d %d",&nN,&nM)!=EOF){
for(int i=0;i<nN;++i){
vG[i].clear();
nD[i]=INF;nP[i]=INF;
}
while (!q.empty())
q.pop();
for(int i=0;i<nM;++i){
int a,b,l,t;
scanf("%d %d %d",&a,&b,&l);
stNode e;
e.p=a;
e.nLen=l;
vG[b].push_back(e);
e.p=b;
vG[a].push_back(e);
}
scanf("%d %d",&nS,&nT);
nD[nS-1]=0;
stNode nd;
nd.p=nS-1;
nd.nLen=0;
q.push(nd);
while(!q.empty()){
stNode t=q.top();
q.pop();
if(t.p==nT-1)
break;
for(int i=0;i<(int)vG[t.p].size();++i){
stNode &e=vG[t.p][i];
if(nD[e.p]>nD[t.p]+e.nLen){
nD[e.p]=nD[t.p]+e.nLen;
nd.p=e.p;
nd.nLen=nD[e.p];
q.push(nd);
}
}
}
if(nD[nT]<INF)
printf("%d\n",nD[nT]);
else
printf("-1\n");
}
return 0;
}

为什么起始点换成1就错了呢。。


  • 电子科大无敌
  • 大幸运星
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看不懂


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回acm吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示