目錄\(\text\)
首先一遍 \(\rm bfs\) 求出 \(1\) 到每個點的最短路,記它為 \(d_i\)。那麼對於邊 \(e(u,v)\)(不妨設 \(d_u\le d_v\)),如果有 \(d_v=d_u+1\),那麼 \(v\) 就可以通過 \(u\) 得到最短路。那麼,當乙個點 \(v\) 所有的可以給它貢獻最短路的點 \(u\) 的 \(d\) 都變大時,就說明 \(d_v\) 也要變大了。
可以搞乙個類似拓撲排序的東西,記 \(v\) 的所有的可以給它貢獻最短路的點 \(u\) 的個數為 \(in_v\),當 \(in_v=0\) 時就可以將變大傳遞給 \(e(v,w)\) 的點 \(w\)。由於每條邊增大後就不可能出現在最短路裡,所以每條邊只用刪除一次。
時間複雜度應該是 \(\mathcal o(m)\) 的。
#include #include #include using namespace std;
const int n = 1e5 + 5;
bool vis[n << 1];
int u[n << 1], v[n << 1], in[n], cnt, ans, n, m, q, dis[n], goal, dot[n << 2], nxt[n << 2], head[n];
queue q;
void addedge(const int u, const int v)
void bfs()
}}void del()
}}int main()
bfs();
for(int i = 1; i <= n; ++ i)
for(int j = head[i]; j; j = nxt[j])
if(dis[i] + 1 == dis[dot[j]]) ++ in[dot[j]];
for(int i = 1; i <= m; ++ i)
if(dis[u[i]] > dis[v[i]]) swap(u[i], v[i]);
while(q --)
return 0;
}
MapReduce之Reduce端Join實現
mapreduce之helloword很簡單,但是要想繼續自己來寫,還有很多坑要注意。這不,咱們這回來個reduce端join實現。網上一搜,有很多,我們要來個自己的吧。廢話少說,先上傳一些資料到hdfs上。input pd.csv 假設這個是產品名稱檔案 input sale.csv 假設這個是銷...
ArcEngine dbf表之間連線Join
arcengine dbf表之間連線join 上乙個部落格寫了要素圖層屬性表與.dbf之間的連線join,但是若想兩個.dbf表之間連線,再用那種方法就不行了,因此這裡呼叫gp工具實現.dbf表之間的連線join。gp工具實在是強大,能解決你的問題,但是卻不能讓你知道到底如何實現的,連線之後開啟.d...
年輪蛋糕JOI2014Final
試題描述 joi 君馬上要和妹妹 joi 子和 joi 美一起吃小吃。今天的小吃是他們三個人都很喜歡的年輪蛋糕。年輪蛋糕是像下圖一樣呈圓筒形的蛋糕。為了把蛋糕分給三個人,joi 君必須沿著半徑方向切 3 刀,從而把蛋糕分成三塊。然而,由於年輪蛋糕硬得像實木一樣,要讓刀切進去並不簡單。因此,這個年輪蛋...