#include #include using namespace std; int n,m; // تعداد یال‌ها m تعداد راس‌ها و n const int N=1000; // ثابتی برای مشخص کردن سقف تعداد راس‌ها vector g[N]; // محل ذخیره یال‌ها vector bg[N]; // محل ذخیره معکوس یال‌ها vector myStack; // پشته‌ای که راس‌ها در هنگام خروج در پیمایش اول در آن می‌ریزیم int comps; // تعداد مولفه‌ها در آخر bool used[N]; // علامتی برای اینکه مشخص شود راسی دیده‌شده یا نه void dfs(int a){ // پیمایش اول used[a]=true; for(int i=0; i> n>>m; for(int i=0; i>a>>b; g[a-1].push_back(b-1); bg[b-1].push_back(a-1); /* است n-1 بازه‌ی معتبر راس‌ها برای برنانه صفر تا * می‌باشد به همین n اما بازه‌ی معتبر ورودی یک تا * دلیل قبل از ذخیره یکی از ورودی‌ها کم می‌کنیم */ } find_comps(); return 0; }