程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 1535 spfa

hdu 1535 spfa

編輯:C++入門知識

建個正向的圖。

建個反向的圖。

2遍spfa搞定。


#include
#include
#include
#include
#include
using namespace std;
int p,q;
const int inf=0x3f3f3f3f;
struct node
{
    int v,nxt;
    int w;
}edge[1000005];

struct s{
    int a,b,c;
}record[1000005];
int nume,head[1000005];
 int dis[1000005];
int inque[1000005];
void add(int u,int v,int w)
{
    edge[nume].v=v;edge[nume].w=w;edge[nume].nxt=head[u];
    head[u]=nume++;
}
int ans=0;

void spfa(int src){
    int i;
    queueque;
    que.push(src);
    for(i=1;i<=p;i++) {
        dis[i]=inf;
        inque[i]=0;
    }
    dis[src]=0;
    inque[src]=1;
    while(!que.empty()){
        int u=que.front();
        que.pop();
        inque[u]=0;
        for(i=head[u]; i!=-1 ; i=edge[i].nxt){
            int v=edge[i].v;
            if(dis[u]+edge[i].w

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved