[kuangbin带你飞]专题四 最短路练习 R HDU 437
2016-10-14 20:00
274 查看
题目地址:https://vjudge.net/contest/66569#problem/R
思路:实现不难,难的是想不到如何转化这个模型。简直是神转换,看上去是数学题,biubiubiu就变成了图。具体题解见kuangbin大神的题解吧,Orz……
kuangbin的题解:http://www.cnblogs.com/kuangbin/archive/2012/08/17/2644557.html
AC代码:
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=300+5;
int E[maxn][maxn];
bool vis[maxn];
int in[maxn];
int d[maxn];
int n;
void spfa(int s)
{
memset(vis,false,sizeof(vis));
memset(d,INF,sizeof(d));
memset(in,0,sizeof(in));
queue<int>q;
for(int i=1;i<=n;i++)
{
if(i==s)
continue;
d[i]=E[s][i];
vis[i]=true;
q.push(i);
}
while(!q.empty())
{
int now=q.front();
q.pop();
vis[now]=false;
if(in[now]++>n)
return;
for(int i=1;i<=n;i++)
{
if(d[i]>d[now]+E[now][i])
{
d[i]=d[now]+E[now][i];
if(vis[i])
continue;
vis[i]=true;
q.push(i);
}
}
}
}
int main()
{
while(~scanf("%d",&n))
{
memset(E,0,sizeof(E));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&E[i][j]);
}
}
int ans,c1,c2;
spfa(1);
ans=d
;
c1=d[1];
spfa(n);
c2=d
;
ans=min(ans,c1+c2);
printf("%d\n",ans);
}
}
思路:实现不难,难的是想不到如何转化这个模型。简直是神转换,看上去是数学题,biubiubiu就变成了图。具体题解见kuangbin大神的题解吧,Orz……
kuangbin的题解:http://www.cnblogs.com/kuangbin/archive/2012/08/17/2644557.html
AC代码:
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=300+5;
int E[maxn][maxn];
bool vis[maxn];
int in[maxn];
int d[maxn];
int n;
void spfa(int s)
{
memset(vis,false,sizeof(vis));
memset(d,INF,sizeof(d));
memset(in,0,sizeof(in));
queue<int>q;
for(int i=1;i<=n;i++)
{
if(i==s)
continue;
d[i]=E[s][i];
vis[i]=true;
q.push(i);
}
while(!q.empty())
{
int now=q.front();
q.pop();
vis[now]=false;
if(in[now]++>n)
return;
for(int i=1;i<=n;i++)
{
if(d[i]>d[now]+E[now][i])
{
d[i]=d[now]+E[now][i];
if(vis[i])
continue;
vis[i]=true;
q.push(i);
}
}
}
}
int main()
{
while(~scanf("%d",&n))
{
memset(E,0,sizeof(E));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&E[i][j]);
}
}
int ans,c1,c2;
spfa(1);
ans=d
;
c1=d[1];
spfa(n);
c2=d
;
ans=min(ans,c1+c2);
printf("%d\n",ans);
}
}
相关文章推荐
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习-G
- [kuangbin带你飞]专题四 最短路练习 M POJ 1062
- [kuangbin带你飞]专题四 最短路练习 G MPI Maelstrom
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习 K(差分约束)L
- [kuangbin带你飞]专题四 最短路练习
- [kuangbin带你飞]专题四 最短路练习 N POJ 1847
- [kuangbin带你飞]专题四 最短路练习 C
- [kuangbin带你飞]专题四 最短路练习 B
- 【算法系列学习】SPFA邻接表最短路 [kuangbin带你飞]专题四 最短路练习 F - Wormholes
- [kuangbin带你飞]专题四 最短路练习 E POJ 1860
- [kuangbin带你飞]专题四 最短路练习 K POJ 3159
- [kuangbin带你飞]专题四 最短路练习 B
- [kuangbin带你飞]专题四 最短路练习D
- [kuangbin带你飞]专题四 最短路练习-E
- [kuangbin带你飞]专题四 最短路练习 P
- [kuangbin带你飞]专题四 最短路练习 S POJ 3169
- [kuangbin带你飞]专题四 最短路练习 O LightOJ 1074
- [kuangbin带你飞]专题四 最短路练习