題目:
題意:在給定有向圖中查詢最短路與次短路,如果(最短路+1==次短路)則輸出(最短路條數+次短路條數),否則只輸出最短路條數。
思路:在最短路的鬆弛操作上做些判斷和記錄即可,具體看**吧(有注釋)。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 100000007
#define ll long long
#define inf 0x3f3f3f3f
const
double pi = acos(-1.0
);const
int maxn=50000
;using
namespace
std;
inline
intscan()
inttol;
int head[1000*2
];/*
******************前向星存邊*************************
*/struct
edgee[
10000*2
];void add(int start,int ed,int
w)/*
*****************優先佇列優化 *************************
*/struct
node
friend
bool
operator
<(node a,node b)
};priority_queue
q;int cnt[2][1010
];int dis[2][1010
];bool vis[2][1010
];void dij(int start,int
ed)else
if(dis[0][to]==dis[p][s]+w)
else
if(dis[1][to]>dis[p][s]+w)
else
if(dis[1][to]==dis[p][s]+w)}}
}int
n,m;
/********************************初始化******************************
*/void
clear()
mem(head,-1
); mem(cnt,0);
mem(vis,
false
); mem(e,0);
while(!q.empty()) q.pop();}/*
************************************main函式****************************
*/int
main()
ints,f;
cin>>s>>f;
dij(s,f);
//coutcout][f];
if(dis[0][f]+1==dis[1
][f])
cout
}return0;
}
最短路條數計數
題目 洛谷 p1144 最短路計數 主要是定義了兩個陣列,乙個是f i 陣列,表示i這個點能夠提供的方案,乙個是sf i 陣列,表示的是到i這個點的方案數。因為普通的加法原理不好搞定,學長說的 分幾種情況,具體看 中的解釋 include include include include includ...
1796 社交網路 最短路條數
時間限制 1 s 空間限制 128000 kb 題目等級 大師 master 2007年noi全國競賽 在社交網路 social network 的研究中,我們常常使用圖論概念去解釋一些 社會現象。不妨看這樣的乙個問題。在乙個社交圈子裡有 n 個人,人與人之間有不同程 度的關係。我們將這個關係網路對...
最短路 次短路長度與條數模板
題目是hdu 1688 傳送門 模板 include define n 1005 define m 10005 define ll long long define inf 0x3f3f3f3f using namespace std int t,c,s,f,n,m int head n dis n...