思路: 寫了好多版本, 都是按照點的關係入隊, 不知道怎麼會錯就是看該點是否是換乘點。。。。。後來按照邊的關係入隊之後就過了, dis[ci][si]:源點到si這個站點時,最後經過的一條路線是屬於公司ci的,然後就是記錄兩個資訊:經過的站點數還有換乘的次數, 按照最短路那樣更新就好了。
#includeconst int maxn = 1e2 + 5;
const int maxm = 1e4 + 5;
const int inf = 1e9 + 10;
using namespace std;
struct p
p(int n, int l, int d, int t) : now(n), las(l), dis(d), tot(t) {}
bool operator < (p p) const
};typedef pairpa;
int tot[maxn], rec[maxn][maxn];
int n, m, t, kase = 1, num;
mapmp;
int vis[maxm];
pa flag[maxn][maxm], dis[maxn][maxm];
int val[maxm];
vectorgx[maxm];
pa sta;
int dijkstra(int ss, int st)
}priority_queueque;
for(int i = 0; i < gx[ss].size(); i++)
while(!que.empty())
for(int i = 0; i < gx[s].size(); i++)
}return inf;
}int main()
for(int j = 0; j < tot[i] - 1; j++)
}num = cnt;
int q; scanf("%d", &q);
while(q--)
printf("%d\n", ans1);
while(sta.first != -1)
int ssz = vec.size();
for(int i = ssz - 1; i >= 0; i--)
for(int i = 0; i < ans.size(); i++)
printf("go by the line of company #%d from %04d to %04d.\n", ans[i].now, ans[i].las, ans[i].dis);}}
return 0;
}/**
#includeconst int maxn = 1e2 + 5;
const int maxm = 1e4 + 5;
const int inf = 1e9 + 10;
using namespace std;
struct p
p(int n, int l, int d) : now(n), las(l), dis(d) {}
bool operator < (p p) const
};typedef pairpa;
int tot[maxn], rec[maxn][maxn];
int n, m, t, kase = 1, num;
mapmp;
vectorg[maxm], pre[maxm];
int vis[maxm];
pa flag[maxn][maxm];
int val[maxm];
int dis[maxn][maxm];
vectorgx[maxm];
int bfs1(int s, int t)
vis[s] = 0;
queueque; que.push(s);
while(!que.empty())
}return vis[t];
}pa sta;
void solve(int s, int t, int st)
}for(int i = 0; i < g[s].size(); i++)
while(!que.empty())
for(int i = 0; i < pre[u].size(); i++) }}
}int main()
for(int i = 1; i <= n; i++)
for(int j = 0; j < tot[i] - 1; j++)
}num = cnt;
int q; scanf("%d", &q);
while(q--)
printf("%d\n", ans1);
solve(toid, fromid, ans1);
while(sta.first != -1)
int ssz = vec.size();
for(int i = 0; i < vec.size(); )
for(int i = 0; i < ans.size(); i++)
printf("go by the line of company #%d from %04d to %04d.\n", ans[i].now, ans[i].las, ans[i].dis);}}
return 0;
}#includeconst int maxn = 1e2 + 5;
const int maxm = 1e4 + 5;
const int inf = 1e9 + 10;
using namespace std;
struct p
p(int n, int l, int d, int t) : now(n), las(l), dis(d), tot(t) {}
bool operator < (p p) const
};typedef pairpa;
int tot[maxn], rec[maxn][maxn];
int n, m, t, kase = 1, num;
mapmp;
vectorg[maxm];
pa flag[maxn][maxm], dis[maxn][maxm];
int val[maxm];
vectorgx[maxm];
pa sta;
int dijkstra(int s, int t)
}priority_queueque;
for(int i = 0; i < g[s].size(); i++)
while(!que.empty())
for(int i = 0; i < gx[si].size(); i++) }}
}int main()
for(int i = 1; i <= n; i++)
for(int j = 0; j < tot[i] - 1; j++)
}num = cnt;
for(int i = 1; i < num; i++) gx[i].push_back(i);
for(int i = 1; i < num; i++)
int q; scanf("%d", &q);
while(q--)
printf("%d\n", ans1);
while(sta.first != -1)
int ssz = vec.size();
for(int i = ssz - 1; i >= 0; i--)
for(int i = 0; i < ans.size(); i++)
printf("go by the line of company #%d from %04d to %04d.\n", ans[i].now, ans[i].las, ans[i].dis);}}
return 0;
}*/
團體程式設計天梯賽
l1 001 hello world l1 002 列印沙漏 l1 009 n個數求和 l1 010 比較大小 l1 011 a b l1 013 計算階乘和 l1 014 簡單題 l1 015 跟歐巴馬一起畫方塊 l1 016 查驗身份證 l1 017 到底有多二 l1 020 帥到沒朋友 l1 ...
團體程式設計天梯賽 05
每個pat考生在參加考試時都會被分配兩個座位號,乙個是試機座位,乙個是考試座位。正常情況下,考生在入場時先得到試機座位號碼,入座進入試機狀態後,系統會顯示該考生的考試座位號碼,考試時考生需要換到考試座位就座。但有些考生遲到了,試機已經結束,他們只能拿著領到的試機座位號碼求助於你,從後台查出他們的考試...
團體程式設計天梯賽 18
微博上有個自稱 大笨鐘v 的傢伙,每天敲鐘催促碼農們愛惜身體早點睡覺。不過由於笨鐘自己作息也不是很規律,所以敲鐘並不定時。一般敲鐘的點數是根據敲鐘時間而定的,如果正好在某個整點敲,那麼 當 數就等於那個整點數 如果過了整點,就敲下乙個整點數。另外,雖然一天有24小時,鐘卻是只在後半天敲1 12下。例...