به نظرم این سوال یک بار دیگه هم مطرح شده بود.
گرافتون رو به صورت DFS پیمایش کنید.
تعداد دفعاتی که برنامه از تابع بازگشتی خارج میشه (یا به عبارتی تعداد دفعاتی که تابع بازگشتی, از خارج صدا زده میشه) همون تعداد تکه های گراف هست
count=0
for i=1 to maxarray
if node i is not visited then
begin
dfs(node i)
count++
end
وقتی از حلقه خارج بشیم count تعداد تکه های گراف هست