本文整理汇总了C++中vii::assign方法的典型用法代码示例。如果您正苦于以下问题:C++ vii::assign方法的具体用法?C++ vii::assign怎么用?C++ vii::assign使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类vii
的用法示例。
在下文中一共展示了vii::assign方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(){
int tc, n, g, u, v;
cin >> tc;
while (tc--){
cin >> n >> g;
AdjList.assign(n, vi());
for (int i = 0; i < g; ++i){
cin >> u >> v;
--u; --v;
AdjList[u].push_back(v);
}
if (n == 0){
cout << 0 << endl;
continue;
}
dfs_num.assign(n, DFS_WHITE);
dfs_low.assign(n, 0);
visited.assign(n, 0);
scc_weight.assign(n, 0);
scc_id.assign(n, -1);
dfsCounter = numSCC = 0;
for (int i = 0; i < n; i++)
if (dfs_num[i] == DFS_WHITE)
tarjanSCC(i);
SccAdj.assign(numSCC, vi());
for (int u = 0; u < n; ++u)
for (auto &v : AdjList[u])
if (scc_id[v] != scc_id[u])
SccAdj[scc_id[u]].push_back(scc_id[v]);
dfs_num.assign(numSCC, DFS_WHITE);
topoSort.clear();
for (int i = 0; i < numSCC; i++)
if (dfs_num[i] == DFS_WHITE)
dfs(i);
vi dist(numSCC, 0);
int best = 1;
for (int u = topoSort.size() - 1; u >= 0; --u){
dist[topoSort[u]] = min(dist[topoSort[u]], scc_weight[topoSort[u]]);
best = min(best, dist[topoSort[u]]);
for (auto &v : SccAdj[topoSort[u]]){
dist[v] = min(dist[v], dist[topoSort[u]] + scc_weight[v]);
best = min(best, dist[v]);
}
}
cout << -best << endl;
}
}
示例2: main
int main() {
ios::sync_with_stdio(0);
int tc; cin >> tc;
for(int i = 1; i <= tc; i++) {
cout << "Case #" << i << ": ";
int m; cin >> n >> m >> k;
graph.assign(n, vi(n, inf)), works.assign(k, ii(0, 0));
for(int i = 0; i < n; i++) graph[i][i] = 0;
for(int i = 0; i < m; i++) {
ll a, b, c; cin >> a >> b >> c;
a--, b--;
graph[a][b] = graph[b][a] = min(graph[a][b], c);
}
for(int i = 0; i < k; i++) {
int a, b;
cin >> a >> b;
works[i].first = a - 1, works[i].second = b - 1;
}
for (int k = 0; k < n; k++)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]);
memo.assign(k + 1, vi(n + 1, -1));
int ans = solve(0, works[0].first) + graph[0][works[0].first];
if(ans >= inf) cout << -1 << endl;
else cout << ans << endl;
}
return 0;
}
示例3: main
int main(){
FILE *f;
f =fopen("input/OrderingTasks.in", "r");
#ifdef ONLINE_JUDGE
f = stdin;
#endif
int m,n;
while(fscanf(f, "%d %d", &n, &m) == 2 && n){
g.clear();
g.assign(n, vi());
for(int i = 0 ; i < m ; i++){
int u,v;
fscanf(f, "%d %d", &u,&v);
g[u-1].push_back(v-1);
}
vi sortedV;
for(int i = 0 ; i < n ; i++){
if(!visited[i])
dfs(i, sortedV);
}
memset(visited, 0, sizeof visited);
for(int i = sortedV.size() -1 ; i >= 0 ; i--){
printf("%d", sortedV[i] + 1);
if(i)printf(" ");
else printf("\n");
}
}
return 0;
}
示例4: main
int main(){
int tc, cs=1; cin >> tc;
while( tc-- ){
memset(res,0,sizeof res); MP.clear();
mf=0; string s1, s2; adj.assign(MAX,vi());
cin >> m; n=1; s=0; t=MAX-1;
for(int i=0 ; i<m ; i++){
cin >> s1;
res[mp(s1)][t]=1;
adj[mp(s1)].push_back(t);
}
cin >> m; int devs = m;
for(int i=0 ; i<m ; i++){
cin >> s1 >> s2; mp(s1);
res[mp(s1)][mp(s2)]=1;
adj[mp(s1)].push_back(mp(s2));
adj[mp(s2)].push_back(mp(s1));
res[s][mp(s1)]=1;
adj[s].push_back(mp(s1));
}
cin >> m;
for(int i=0 ; i<m ; i++){
cin >> s1 >> s2;
res[mp(s1)][mp(s2)]=INF;
adj[mp(s1)].push_back(mp(s2));
adj[mp(s2)].push_back(mp(s1));
}
while(1){
f=0; memset(par,-1,sizeof par); dist.assign(MAX,INF);
dist[s]=0; queue<int> q; q.push(s);
while(!q.empty()){
int u=q.front(); q.pop();
if(u==t) break;
for(int i=0 ; i<adj[u].size(); i++){
int v=adj[u][i];
if(res[u][v]>0 && dist[v]==INF){
dist[v]=dist[u]+1; q.push(v); par[v]=u;
}
}
}
agument(t,INF);
if(f==0) break;
mf+=f;
}
cout << devs-mf << endl;
if(tc) cout << endl;
}
return 0;}
示例5: main
int main(){
int T, R, N, x, y;
cin >> T;
for(int Ti = 1; Ti <= T; Ti++){
cin >> N >> R;
nodes.assign(N, ii()); EdgeList.clear();
for(int i = 0; i < N; i++){
cin >> x >> y;
nodes[i].first = x; nodes[i].second = y;
for(int j = i-1; j >= 0; j--){
EdgeList.push_back(make_pair(dist(i,j), ii(j,i)));
}
}
sort(EdgeList.begin(),EdgeList.end());
double roads = 0, railroads = 0;
int states = 1;
bool fRoad = true;
UnionFind UF(N);
for(int i = 0; i < (int)EdgeList.size(); i++){
pair<double, ii> front = EdgeList[i];
if(!UF.isSameSet(front.second.first, front.second.second)){
if(front.first > R){
railroads += front.first;
if(fRoad){
states = UF.count();
fRoad = false;
}
}
else{
roads+= front.first;
}
UF.unionSet(front.second.first, front.second.second);
if(UF.count() == 1) break;
}
}
cout << "Case #" << Ti << ": " << states << ' ' << (int)(roads+.5) << ' ' << (int)(railroads+.5)<<'\n';
}
}
示例6: getGraph
void getGraph()
{
data.assign(2, pii(-1,-1));
for(int i=0;i < n;i++)
for(int j=0;j<m;j++)
{
if(grip[i][j]=='S')
{
data[0]=pii(i,j);
graph[i][j][0]=graph[i][j][1]=graph[i][j][2]=graph[i][j][3] ='.';
}
else if(grip[i][j]=='G')
{
data[1]=pii(i,j);
graph[i][j][0]=graph[i][j][1]=graph[i][j][2]=graph[i][j][3] ='.';
}
else
{
graph[i][j][0]=graph[i][j][1]=graph[i][j][2]=graph[i][j][3] =grip[i][j];
if(getDir(graph[i][j][0])>=0)
{
data.push_back(pii(i,j));
graph[i][j][1] = fun(graph[i][j][0]);
graph[i][j][2] = fun(graph[i][j][1]);
graph[i][j][3] = fun(graph[i][j][2]);
}
}
}
for(int i=2;i<data.size();i++)
{
int dire=getDir(graph[data[i].first][data[i].second][0]);
for(int k=0;k<4;k++)
{
int dir=(dire+k)%4;
int ni=data[i].first+dy[dir];
int nj=data[i].second+dx[dir];
while(validDisp(ni,nj,k) )
{
graph[ni][nj][k]='x';
ni+=dy[dir];
nj+=dx[dir];
}
}
}
}
示例7: main
int main() {
//READ("in.txt");
//WRITE("out.txt");
int n;
while(~getI(n) && n)
{
getchar();
AdjList.assign(n+4,vi());
string st;
while(getline(cin,st))
{
stringstream ss(st);
int x,src;
ss >> src;
if(src==0) break;
while(ss>>x)
{
if(x==0) break;
AdjList[src].PB(x);
}
}
int t;
getI(t);
for(int i=1;i<=t;i++)
{
int src;
getI(src);
visited.assign(n+4,0);
int res = n-BFS(src);
printf("%d",res);
for(int i=1;i<=n;i++)
{
if(visited[i]==0) printf(" %d",i);
}
printf("\n");
}
}
return 0;
}
示例8: main
int main() {
// READ("in.txt");
//WRITE("out.txt");
while(~getI(e))
{
AdjList.assign(e+4,vi());
for(int i=0;i<e;i++)
{
int n;
getI(n);
for(int j=0;j<n;j++)
{
int x;
getI(x);
AdjList[i].PB(x);
}
}
int t;
getI(t);
for(int i=0;i<t;i++)
{
int n;
getI(n);
if(AdjList[n].size()==0) printf("0\n");
else
{
int dis = BFS(n);
int cnt=0;
for(int i=0;i<e;i++)
{
if(dist[i]==dis) cnt++;
}
printf("%d %d\n",cnt,dis);
}
}
}
return 0;
}
示例9: main
int main() {
// READ("in.txt");
// WRITE("out.txt");
int t;
getI(t);
for(int ci=1;ci<=t;ci++)
{
int v,e;
getII(v,e);
AdjList.assign(v+4,vi());
for(int i=0;i<e;i++)
{
int x,y;
getII(x,y);
AdjList[x].PB(y);
AdjList[y].PB(x);
}
color.assign(v+4,-1);
int cnt=0;
for(int i=0;i<v;i++)
{
if(color[i]==-1)
{
int k = BFS(i);
//debug(i,k)
if(k==-1)
{
cnt = -1;
break;
}
cnt += k;
}
}
printf("%d\n",cnt);
}
return 0;
}
示例10: main
int main() {
// READ("in.txt");
//WRITE("out.txt");
int t;
getI(t);
for(int ci=1;ci<=t;ci++)
{
int n,m;
getII(n,m);
CLR(result);
AdjList.assign(n+4,vi());
for(int i=0;i<m;i++)
{
int x,y;
getII(x,y);
AdjList[x].PB(y);
AdjList[y].PB(x);
}
printf("Case %d: ",ci);
if(n==1)
{
printf("0\n");
continue;
}
CLR(result);
BFS(1);
int cnt=0;
for(int i=1;i<=n;i++)
{
if(result[i]==1) cnt++;
}
printf("%d\n",cnt);
}
return 0;
}
示例11: st_create
void st_create(vii &t, const vi &A) {
int n = A.size();
t.assign(n * 4, make_pair(-1, -1));
st_build(t, A, 1, 0, n - 1);
}
开发者ID:AnhellO,项目名称:Programming_Challenges_And_Algorithms,代码行数:5,代码来源:3283+-+Alice+and+Array+in+Flames.cpp