poj 3463 Sightseeing(dij)
来源:互联网 发布:知乎 大误 龙 编辑:程序博客网 时间:2024/06/02 04:40
详见:http://blog.sina.com.cn/s/blog_676070110100rult.html
//308K 79MS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <queue>
#define VM 1005
#define EM 10010
using namespace std;
const int inf = 0x3f3f3f3f;
int head[VM],cnt[VM][2],dist[VM][2],vis[VM][2];
int e,src,des,n,m;
struct E
{
intto,w,nxt;
} edge[EM];
void addedge (int cu,int cv,int cw)
{
edge[e].to =cv;
edge[e].w =cw;
edge[e].nxt= head[cu];
head[cu] = e++;
}
int dij ()
{
inti,j,u,min,flag;
memset(dist,0x3f,sizeof(dist));
memset(vis,0,sizeof(vis));
memset(cnt,0,sizeof(cnt));
dist[src][0]= 0;
cnt[src][0]= 1;
for (i = 1;i < 2*n; i ++)
{
min = inf;
for (j = 1; j <= n; j ++)
if (!vis[j][0]&&dist[j][0]< min)
{
u = j;
flag = 0;
min = dist[j][0];
}
else if (!vis[j][1]&&dist[j][1]< min)
{
u = j;
flag = 1;
min = dist[j][1];
}
if (min == inf)
break;
vis[u][flag] = 1;
for (j = head[u]; j != -1; j = edge[j].nxt)
//308K
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <queue>
#define VM 1005
#define EM 10010
using namespace std;
const int inf = 0x3f3f3f3f;
int head[VM],cnt[VM][2],dist[VM][2],vis[VM][2];
int e,src,des,n,m;
struct E
{
} edge[EM];
void addedge (int cu,int cv,int cw)
{
}
int dij ()
{