【Prim】-POJ-2421-构造公路
2014-03-12 21:06
411 查看
题目链接:http://poj.org/problem?id=2421
题目描述:最裸的最短路题目
解题思路:
明明是一个最裸的最短路题。周赛那天竟然一直WA。唉,后来自己试试,竟然又WA,拜托。。这是最裸体啊。。我到底怎么了?!然后找张纸画了画,发现prim函数里写得太混乱了,错了好几个地方,看来是我没理解透彻,唉~说来例会那天也挂黑板上了。。下次再也不溜号了。。= = 555555 T_T
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int INF=9999999;
int cost[1015][1015],dis[1015];
bool vis[1015];
int N;
int prim()
{
int from,to,ans=0,p,i;
from=1;
vis[1]=1;
for(to=1;to<=N;to++)
dis[to]=cost[from][to];
while(1)
{
int mindis=INF;
for(to=1;to<=N;to++)
{
if(dis[to]<mindis&&!vis[to])
{
mindis=dis[to];
p=to;
}
}
if(mindis==INF)break;
vis[p]=1;
ans+=mindis;
from=p;
for(to=1;to<=N;to++)
{
dis[to]=min(dis[to],cost[from][to]);
}
}
return ans;
}
int main()
{
freopen("2421_input.txt","r",stdin);
int ans,i,j,num;
while(cin>>N)
{
for(i=1;i<=N;i++)
dis[i]=INF;
memset(vis,0,sizeof(vis));
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{
cin>>cost[i][j];
}
cin>>num;
while(num--)
{
cin>>i>>j;
cost[i][j]=cost[j][i]=0;
}
ans=prim();
cout<<ans<<endl;
}
return 0;
}
AC截图:
题目描述:最裸的最短路题目
解题思路:
明明是一个最裸的最短路题。周赛那天竟然一直WA。唉,后来自己试试,竟然又WA,拜托。。这是最裸体啊。。我到底怎么了?!然后找张纸画了画,发现prim函数里写得太混乱了,错了好几个地方,看来是我没理解透彻,唉~说来例会那天也挂黑板上了。。下次再也不溜号了。。= = 555555 T_T
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int INF=9999999;
int cost[1015][1015],dis[1015];
bool vis[1015];
int N;
int prim()
{
int from,to,ans=0,p,i;
from=1;
vis[1]=1;
for(to=1;to<=N;to++)
dis[to]=cost[from][to];
while(1)
{
int mindis=INF;
for(to=1;to<=N;to++)
{
if(dis[to]<mindis&&!vis[to])
{
mindis=dis[to];
p=to;
}
}
if(mindis==INF)break;
vis[p]=1;
ans+=mindis;
from=p;
for(to=1;to<=N;to++)
{
dis[to]=min(dis[to],cost[from][to]);
}
}
return ans;
}
int main()
{
freopen("2421_input.txt","r",stdin);
int ans,i,j,num;
while(cin>>N)
{
for(i=1;i<=N;i++)
dis[i]=INF;
memset(vis,0,sizeof(vis));
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{
cin>>cost[i][j];
}
cin>>num;
while(num--)
{
cin>>i>>j;
cost[i][j]=cost[j][i]=0;
}
ans=prim();
cout<<ans<<endl;
}
return 0;
}
AC截图:
相关文章推荐
- 关于指针的一些事情
- C/C++数据对齐详细解析
- C++中引用的使用总结
- C与C++之间相互调用实例方法讲解
- C++中引用(&)的用法与应用实例分析
- 解析C++ 浮点数的格式化输出
- 深入分析C++中几个最不常用的关键字
- c++中inline的用法分析
- C++ Primer 第一部分基本语言
- 深入解析C++ Data Member内存布局
- 从汇编看c++中默认构造函数的使用分析
- 关于C++中的友元函数的一些总结
- C++的sstream标准库详细介绍
- 基于C++自动化编译工具的使用详解
- 浅谈C++中的string 类型占几个字节
- C/C++ 宏详细解析
- 深入分析C++中两个大数相乘结果不正确的问题
- 探讨C++中数组名与指针的用法比较分析
- 深入解析C++中的引用类型
- C++可变参数的实现方法