Use the parameters you are searching for in your SELECT clause rather than the values returned from the database and you can then use DISTINCT to ensure you only get a single row.
Like this:
declare @city1 nvarchar(125) = 'Hyderabad'
declare @city2 nvarchar(125) = 'Bangalore'
SELECT DISTINCT @city1, @city2, Distance
FROM Table1
WHERE (FromCity = @city1 AND ToCity = @city2)
OR
(FromCity = @city2 AND ToCity = @city1)
[EDIT - Deal with Id column]
If you need a list of the Id's that matched the two cities then generate a CSV list of them e.g.
SELECT DISTINCT @city1 AS CITY1, @city2 AS CITY2, Distance,
IDS = STUFF((SELECT ', ' + CAST(id as nvarchar) FROM Table1
WHERE (FromCity = @city1 AND ToCity = @city2)
OR (FromCity = @city2 AND ToCity = @city1)
FOR XML PATH('')),1,2,'')
FROM Table1
WHERE (FromCity = @city1 AND ToCity = @city2)
OR
(FromCity = @city2 AND ToCity = @city1)
Alternatively you can get the Id in separate columns by "cheating" with Min and Max (this assumes you will not be inserting duplicate entries onto the table):
SELECT DISTINCT @city1 AS CITY1, @city2 AS CITY2, Distance, MIN(Id), MAX(Id)
FROM Table1
WHERE (FromCity = @city1 AND ToCity = @city2)
OR
(FromCity = @city2 AND ToCity = @city1)
GROUP BY Distance
[EDIT] OP has clarified the expected results. The last query will get what you need, just choose
either MIN(Id)
or MAX(Id).