1030 Travel Plan (30)
来源:互联网 发布:淘宝首页1920全屏装修 编辑:程序博客网 时间:2024/05/29 08:02
#include<iostream>
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
class CA
{
public:
enum{N=500,INF=0x7FFFFFFF/2};
//void init();
void run();
void getshortestlen();
void minimumcost(int c1,int cost);
private:
int n,m,sv,dv,mincost,ststlen;
int dist[N][N],cost[N][N];
int dx[N];
vector<int> path[N],tmppath,bestpath;
};
void CA::run()
{
cin>>n>>m>>sv>>dv;
fill_n((int*)dist,N*N,INF);
fill_n((int*)cost,N*N,INF);
int i,v1,v2,l,c;
for(i=0;i<m;i++)
{
cin>>v1>>v2>>l>>c;
dist[v1][v2]=dist[v2][v1]=l;
cost[v1][v2]=cost[v2][v1]=c;
}
mincost=INF;
getshortestlen();
minimumcost(dv,0);
//vector<int>::iterator it;
/*for(it=path[3].begin();it!=path[3].end();it++)
{
printf("%d ",*it);
}
printf("\n");*/
for(i=bestpath.size()-1;i>=0;i--)
{
printf("%d ",bestpath[i]);
}
printf("%d %d",ststlen,mincost);
}
void CA::getshortestlen()
{
bool visited[N];
int i,k;
for(i=0;i<n;i++)
visited[i]=false;
for(i=0;i<n;i++)
{
dx[i]=dist[sv][i];
//printf("%d \n",dx[i]);
}
//copy(dist[sv],dist[sv]+n,d);
dx[sv]=0;
while(1)
{
k=-1;
for(i=0;i<n;i++)
{
if(visited[i])
continue;
if(k==-1||dx[i]<dx[k])
k=i;
}
if(k==-1)
{
break;
}
if(k==dv)
{
ststlen=dx[k];
break;
}
visited[k]=true;
for(i=0;i<n;i++)
{
if(visited[i])
continue;
if(dx[i]>dx[k]+dist[i][k])
{
path[i].clear();
dx[i]=dx[k]+dist[i][k];
path[i].push_back(k);
}
else if(dx[i]==dx[k]+dist[i][k])
{
path[i].push_back(k);
}
}
}
}
void CA::minimumcost(int c1,int cst)
{
tmppath.push_back(c1);
if(c1==sv)
{
if(cst<mincost)
{
mincost=cst;
bestpath=tmppath;
}
}
int i;
for(i=0;i<path[c1].size();i++)
{
minimumcost(path[c1][i],cst+cost[c1][path[c1][i]]);
tmppath.pop_back();
}
}
int main()
{
//freopen("test","r",stdin);
CA *a=new CA;
//a->init();
a->run();
return 0;
}
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
class CA
{
public:
enum{N=500,INF=0x7FFFFFFF/2};
//void init();
void run();
void getshortestlen();
void minimumcost(int c1,int cost);
private:
int n,m,sv,dv,mincost,ststlen;
int dist[N][N],cost[N][N];
int dx[N];
vector<int> path[N],tmppath,bestpath;
};
void CA::run()
{
cin>>n>>m>>sv>>dv;
fill_n((int*)dist,N*N,INF);
fill_n((int*)cost,N*N,INF);
int i,v1,v2,l,c;
for(i=0;i<m;i++)
{
cin>>v1>>v2>>l>>c;
dist[v1][v2]=dist[v2][v1]=l;
cost[v1][v2]=cost[v2][v1]=c;
}
mincost=INF;
getshortestlen();
minimumcost(dv,0);
//vector<int>::iterator it;
/*for(it=path[3].begin();it!=path[3].end();it++)
{
printf("%d ",*it);
}
printf("\n");*/
for(i=bestpath.size()-1;i>=0;i--)
{
printf("%d ",bestpath[i]);
}
printf("%d %d",ststlen,mincost);
}
void CA::getshortestlen()
{
bool visited[N];
int i,k;
for(i=0;i<n;i++)
visited[i]=false;
for(i=0;i<n;i++)
{
dx[i]=dist[sv][i];
//printf("%d \n",dx[i]);
}
//copy(dist[sv],dist[sv]+n,d);
dx[sv]=0;
while(1)
{
k=-1;
for(i=0;i<n;i++)
{
if(visited[i])
continue;
if(k==-1||dx[i]<dx[k])
k=i;
}
if(k==-1)
{
break;
}
if(k==dv)
{
ststlen=dx[k];
break;
}
visited[k]=true;
for(i=0;i<n;i++)
{
if(visited[i])
continue;
if(dx[i]>dx[k]+dist[i][k])
{
path[i].clear();
dx[i]=dx[k]+dist[i][k];
path[i].push_back(k);
}
else if(dx[i]==dx[k]+dist[i][k])
{
path[i].push_back(k);
}
}
}
}
void CA::minimumcost(int c1,int cst)
{
tmppath.push_back(c1);
if(c1==sv)
{
if(cst<mincost)
{
mincost=cst;
bestpath=tmppath;
}
}
int i;
for(i=0;i<path[c1].size();i++)
{
minimumcost(path[c1][i],cst+cost[c1][path[c1][i]]);
tmppath.pop_back();
}
}
int main()
{
//freopen("test","r",stdin);
CA *a=new CA;
//a->init();
a->run();
return 0;
}
0 0
- 1030 Travel Plan (30)
- PAT 1030 Travel Plan (30)
- pat 1030 Travel Plan
- 1030 Travel Plan
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- PAT_A_1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 1030. Travel Plan (30)
- 类似于yahoo邮箱登陆的提示效果
- jquery学习2 treegrid 更新写法,获取form键值对
- textarea限制输入字数
- 分页SQL取下一页
- 使用JDBC时Class.forName()的作用
- 1030 Travel Plan (30)
- FreeRTOS时钟配置——Cortex-M3
- win2003 服务器安全设置教程
- struts2中关于下载的实例应用
- 为什么写博客?
- CocosBuilder绑定到cocos2d-x
- Confluence 页面属性报表(Page Properties Report)宏
- 20140226签到帖
- python的作用域