poj 2394 Checking an Alibi
2011-09-08 20:27
1056 查看
dijkstra~最近一直做类似的题目,有点感觉了~虽然都是水题,不过也蛮高兴的,毕竟目前只是粗粗的预习了下数据结构!
这个学期开始教数据结构,要加油了!
#include<stdio.h>
#include<string.h>
#define MAX 501
#define INF_MAX 100000001
int map[MAX][MAX];
int dis[MAX];
int used[MAX];
int ans[MAX];
void Dijstala(int m)
{
int i,j,min,v;
for(i=1;i<=m;i++)
{
used[i]=0;
dis[i]=map[1][i];
}
dis[1]=0;//谷仓离自己的距离为0
used[1]=1;
while(1)
{
min=INF_MAX;
v=0;
for(i=1;i<=m;i++)
if(!used[i]&&dis[i]<min)
{
min=dis[i];
v=i;
}
if(v==0)
break;
used[v]=1;
for(j=1;j<=m;j++)
if(!used[j]&&map[v][j]+dis[v]<dis[j])
dis[j]=map[v][j]+dis[v];
}
}
int main()
{
int n,t,i,a,b,c,j,r,m,q,x;
r=0;
scanf("%d%d%d%d",&n,&t,&q,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
map[i][j]=INF_MAX;
for(i=1;i<=t;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(map[a][b]>c)//去重边
{
map[a][b]=c;
map[b][a]=c;
}
}
Dijstala(n);
for(i=1;i<=q;i++)
{
scanf("%d",&x);
if(dis[x]<=m)//小于m的牛可以偷吃到
ans[r++]=i;
}
printf("%d\n",r);
for(i=0;i<r;i++)
printf("%d\n",ans[i]);
return 0;
}
这个学期开始教数据结构,要加油了!
#include<stdio.h>
#include<string.h>
#define MAX 501
#define INF_MAX 100000001
int map[MAX][MAX];
int dis[MAX];
int used[MAX];
int ans[MAX];
void Dijstala(int m)
{
int i,j,min,v;
for(i=1;i<=m;i++)
{
used[i]=0;
dis[i]=map[1][i];
}
dis[1]=0;//谷仓离自己的距离为0
used[1]=1;
while(1)
{
min=INF_MAX;
v=0;
for(i=1;i<=m;i++)
if(!used[i]&&dis[i]<min)
{
min=dis[i];
v=i;
}
if(v==0)
break;
used[v]=1;
for(j=1;j<=m;j++)
if(!used[j]&&map[v][j]+dis[v]<dis[j])
dis[j]=map[v][j]+dis[v];
}
}
int main()
{
int n,t,i,a,b,c,j,r,m,q,x;
r=0;
scanf("%d%d%d%d",&n,&t,&q,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
map[i][j]=INF_MAX;
for(i=1;i<=t;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(map[a][b]>c)//去重边
{
map[a][b]=c;
map[b][a]=c;
}
}
Dijstala(n);
for(i=1;i<=q;i++)
{
scanf("%d",&x);
if(dis[x]<=m)//小于m的牛可以偷吃到
ans[r++]=i;
}
printf("%d\n",r);
for(i=0;i<r;i++)
printf("%d\n",ans[i]);
return 0;
}
相关文章推荐
- poj 2394 Checking an Alibi--(Dijkstra)
- poj 2394 Checking an Alibi
- POJ 2394 Checking an Alibi (最短路+Dijkstra)
- POJ 2394 Checking an Alibi【SPFA】
- POJ 2394 Checking an Alibi (dijkstra)
- POJ 2394 Checking an Alibi 简单最短路
- POJ2394 Checking an Alibi 基础最短路
- POJ 2394 Checking an Alibi(最短路)
- POJ2394 Checking an Alibi【Dijkstra】
- poj 2394 Checking a Alibi-dijkstra
- POJ2394 Checking an Alibi ——最短路——Pku2394
- pku2394 Checking an Alibi
- poj&nbsp;2394&nbsp;Checking&nbsp;an&nbsp;Alibi(dij+h…
- 【BZOJ】1681: [Usaco2005 Mar]Checking an Alibi 不在场的证明(spfa)
- bzoj:1681 [Usaco2005 Mar]Checking an Alibi 不在场的证明
- BZOJ1681 [Usaco2005 Mar]Checking an Alibi 不在场的证明
- Checking an Alibi(最短路径 Dijkstra)
- Checking an Alibi
- POJ2394 Checking an Alibi ——最短路
- POJ2394 Checking an Alibi 最短路