现在的位置: 首页 > 综合 > 正文

poj 3463 Sightseeing(dij)

2018年03月17日 ⁄ 综合 ⁄ 共 1006字 ⁄ 字号 评论关闭
详见: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
{
    int
to,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 ()
{
    int
i,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)
     

抱歉!评论已关闭.