Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- #include <stack>
- #include <algorithm>
- using namespace std;
- const int mx=1e5, mx_kr=3e5;
- vector <pair <int, int> > vec[mx];
- //vector <int> wierz[mx];
- bool odw[mx];
- int poz[mx], low[mx];
- int il_spoj;
- stack <int> S;
- int dwuspoj[mx_kr];
- pair <int, int> kraw[mx_kr];
- int n, m, magazynier, pocz, kon;
- int mapa[mx][mx];
- /*void dfs(int x, int v, int e){
- odw[x]=true;
- poz[x]=poz[v]+1;
- low[x]=poz[x];
- //printf(">> x %d poz %d v %d\n",x,poz[x],v);
- for(auto u: vec[x]){
- if(odw[u.first] && u.second!=e && poz[x]>poz[u.first]){
- low[x]=min(low[x], poz[u.first]);
- S.push(u.second);
- //printf(">kr %d\n",S.top());
- }
- if(!odw[u.first]){
- S.push(u.second);
- //printf(">kr %d\n",S.top());
- dfs(u.first, x, u.second);
- low[x]=min(low[u.first], low[x]);
- if(low[u.first]>=poz[x]){
- il_spoj++;
- while(S.top()!=u.second){
- //printf(">>kr %d\n",S.top());
- dwuspoj[S.top()]=il_spoj;
- int a=kraw[S.top()].first, b=kraw[S.top()].second;
- if(wierz[a].empty() || wierz[a].back()!=il_spoj) wierz[a].push_back(il_spoj);
- if(wierz[b].empty() || wierz[b].back()!=il_spoj) wierz[b].push_back(il_spoj);
- S.pop();
- }
- dwuspoj[S.top()]=il_spoj;
- int a=kraw[S.top()].first, b=kraw[S.top()].second;
- if(wierz[a].empty() || wierz[a].back()!=il_spoj) wierz[a].push_back(il_spoj);
- if(wierz[b].empty() || wierz[b].back()!=il_spoj) wierz[b].push_back(il_spoj);
- S.pop();
- }
- }
- }
- }*/
- void wczyt(){
- scanf("%d %d ",&n,&m);
- /*for(int i=1; i<=n; i++){
- for(int j=1; j<=m; j++){
- char z;
- scanf("%c",&z);
- if(z=='S')
- mapa[i][j]=1;
- if(z=='M')
- magazynier=(i-1)*n+j;
- //if(z=='P')
- //pocz=(i-1)*n+j;
- //if(z=='K')
- //kon=(i-1)*n+j;
- }
- }
- for(int i=1; i<=n; i++){
- for(int j=1; j<=m; j++){
- printf("%d",mapa[i][j]);
- }
- puts("");
- }*/
- }
- int main(){
- //wczyt();
- /*for(int i=1; i<=m; i++){
- int a, b;
- scanf("%d %d",&a,&b);
- vec[a].push_back({b, i});
- vec[b].push_back({a, i});
- kraw[i]={a, b};
- }
- for(int i=1; i<=n; i++){
- if(!odw[i]) dfs(i, 0, 0);
- }*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement